Placeholder Image

字幕列表 影片播放

  • In this assignment we will setup the enemies in the game.

  • Each enemy will be on a set patrol route by default.

  • If he is made aware of the player's location

  • by seeing or hearing the player,

  • by the player triggering an alarm

  • system or by another enemy spotting

  • the player then he should rush to the position

  • of the sighting or the triggering alarm.

  • If however the enemy can see and has

  • line of sight to the player he should

  • instead shoot the player

  • There will be two variables for storing the

  • player's location. One global variable

  • that all the enemies will be sent to and one

  • personal variable that only the

  • specific enemy will be sent to.

  • When the player is spotted, either by an enemy

  • or an alarm system

  • this will set the global variable.

  • which has already been created in our

  • LastPlayerSighting script.

  • When the player is heard by an enemy

  • either by running or using the attract attention feature

  • only the personal variable will be set.

  • If the global variable is not set

  • to the reset value indicating that the

  • player has been spotted then the enemies

  • should set their personal variable to

  • match the global variable's value.

  • and converge on the sighting position.

  • The enemies will have two colliders.

  • A large sphere trigger collider

  • and a capsule collider.

  • The sphere will be used as the enemy's

  • range of sight and hearing.

  • The capsule will be used for normal collisions.

  • Because the enemies will be moving will colliders

  • they will also need a rigidbody component.

  • This will be kinematic because the enemy's

  • should not react to collisions and the movement

  • will be dictated by the nav mesh.

  • As such, the enemies will also need

  • nav mesh agent component. The nav mesh

  • agent will physically move the enemy character

  • and this will provide information that we

  • can feed in to the animator controller

  • to define which animation should be played

  • to match this movement.

  • The enemies will be using a total of five

  • scripts, four of which will be applied

  • as components to the enemy and one

  • which will be a helper class.

  • The scripts will be as follows.

  • Enemy Sight.

  • This will work as the enemy's ears and eyes.

  • This script will be used to detect when the player's

  • within the sphere trigger collider.

  • Animator Setup.

  • This script will be a helper class that is

  • not applied to the enemy as a component.

  • Instead an instance of the class will be created

  • in another script so that the function

  • from it can be used. This will perform the

  • task of sending information from the Enemy

  • Animation script to the animator controller.

  • This will take information about direction and

  • velocity from the nav mesh agent

  • and manipulate it in to a form that

  • can be used by the Animator Setups script

  • to apply to the animator controller.

  • Enemy AI.

  • This works as the enemy's brain

  • and controls the way it behaves based on whether

  • the player is in sight or not.

  • It then feeds the information to the nav mesh agent

  • to determine what the enemy should do.

  • Enemy Shooting.

  • This controls the actions that are performed when

  • the enemy is shooting the player, including

  • the amount of damage and the rate of fire.

  • The first thing to do when creating an enemy

  • is to drag the Enemy FPX in to the Scene.

  • Grab char_robotGuard and drop it in.

  • We'll put him just outside the door of the second room

  • at (-18, 0, 6.5).

  • As with all dynamic game objects in the scene

  • we'll make sure it's using light probes.

  • Open the hierarchy and select the body

  • then check Use Light Probes.

  • We also need to do this for the helmet.

  • Locate it under the

  • skeleton - hips - spine - neck - head

  • part of the hierarchy.

  • This will mean that the robot is dynamically lit in the scene.

  • Before we add any components to it

  • let's tag the parent game object Enemy.

  • Select it from the Tag drop down.

  • Notice that because this asset was imported

  • with a rig we automatically have an animator

  • component that's waiting for a controller asset

  • which we will create later.

  • The first components we should add are the colliders.

  • We will start with a sphere collider.

  • We will need the centre of the collider to be

  • at the centre of the enemy, which is 1 in the Y axis.

  • The radius is the range of sight the enemy will have.

  • So 10 is a good starting point.

  • We can adjust this later if we need to.

  • Most importantly this collider needs

  • to be a trigger, so we'll check that box now.

  • Next the capsule collider.

  • We need to add this in addition to our sphere

  • collider so we will add it to a child

  • game object called char_robotGuard_body.

  • Again the centre needs to be moved up by 1.

  • But this time we only need the radius to be 0.3.

  • We also need to change the height to 2.

  • We will add the rest of the components to the root

  • game object, since we have colliders

  • that move we will add a rigidbody.

  • We need this to be kinematic so that the enemy

  • doesn't bounce when it hits something.

  • We now need the nav mesh agent.

  • Almost all of the starting parameters are fine

  • but we want to adjust the stopping distance to 0.8.

  • Now that we have the nav mesh agent on the enemy

  • this is a good time to bake our nav mesh.

  • In order for parts of the environment to be

  • included in the bake they should be marked

  • as Navigation Static.

  • EVerything that we marked as static when we

  • bake the light map will by default

  • also be navigation static.

  • But we can check whether this is the case by

  • seeing if the Static check box on

  • the top right in the Inspector is checked

  • and by looking in the drop down to the right

  • of this to ensure that navigation is included.

  • First open the env_stealth_static game object

  • so that the groups of game objects show.

  • We want the Debris - Ground - Lift Shaft - Props - both of the walls

  • to be navigation static.

  • We also want the battle bus and all of the

  • switch units to be navigation static.

  • Here we are simply checking that Navigation Static

  • is checked for each of these object.

  • It should already be.

  • Now open the Navigation panel.

  • You can do this through Window - Navigation

  • if you don't already have it open.

  • We have a couple of settings we want

  • to make sure of before we bake the nav mesh.

  • Under the Bake tab we want the

  • radius to be 0.3.

  • This will mean that enemies can fit

  • through slightly tighter spaces.

  • The height should be 1.

  • If this was too low then the nav mesh would go

  • under things like the battle bus causing

  • the enemies to try and run through it.

  • All that's left to do now is click Bake.

  • This should only take a few seconds.

  • That concludes the setup of the enemy.

  • So now is a good time to save the scene and

  • our project. In the next assignment we will create

  • the animator controller for the enemy.

  • Subtitles by the Amara.org community

In this assignment we will setup the enemies in the game.

字幕與單字

影片操作 你可以在這邊進行「影片」的調整,以及「字幕」的顯示

B1 中級 美國腔

隱身遊戲教程 - 401 - 敵人設置 - Unity官方教程 (Stealth game tutorial - 401 - Enemy Setup - Unity Official Tutorials)

  • 27 3
    more 發佈於 2021 年 01 月 14 日
影片單字