unity自动生成敌人_Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下:

1.敌人能够自动跟随主角

2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻击) Death(死亡).

3.要求敌人在合适的时机能够做出合适动作

(一)自动跟随的实现

1)首先,新建一个场景  如图,场景里至少有两个角色:  有一个敌人(刀骷髅兵) 还有一个主角(没错,就是那个胶囊体)

2)先选择场景模型,然后在 Inspector 窗口选项 Static旁边的小三角显示出下拉菜单,确定其中 Navigation Static 被选中.  对于与场景地形无关的模型选项,则要确定没有被选中,如图所示。

             

              

Navigation 窗口的选项主要是定义地形对寻路的影响。Radius 和 Height 可以理解为寻路者的半径和高度。Max Slope 是最大坡度,超过这个坡度寻路者则无法通过。Step Height 是楼梯的最大高度 ,超过这个高度寻路者则无法通过。Drop Height表示寻路者可以跳落的高度极限。Jump Distance 表示寻路者的跳跃距离极限。

3)选择菜单栏里的Window 选项里的Navigation选项   点击下面的bake   渲染完成后是这个样子  这些蓝色的区域就是能自动寻路的区域

                    

4) 然后给主角写 移动控制脚本 和 镜头控制脚本  并赋给主角(胶囊体):

1 public classPlayerControl : MonoBehaviour2 {3

4 //定义玩家的Transform

5 publicTransform m_transform;6 //定义玩家的角色控制器

7 CharacterController m_ch;8 //定义玩家的移动速度

9 float m_movespeed = 10.0f;10 //定义玩家的重力

11 float m_gravity = 2.0f;12 //定义玩家的生命

13 public int m_life = 5;14

15 //定义摄像机的Transform

16 Transform m_cameraTransform;17 //定义摄像机的旋转角度

18 Vector3 m_cameraRotation;19 //定义摄像机的高度

20 float m_cameraHeight = 1.4f;21 //定义小地图摄像机

22 publicTransform m_miniMap;23

24 //定义枪口的Transform m_muzzlepPoint;

25 Transform m_muzzlePoint;26 //定义射击时,射线射到的碰撞层

27 publicLayerMask m_layer;28 //定义射中目标后粒子效果的Transform

29 publicTransform m_fx;30 //定义射击音效

31 publicAudioClip m_shootAudio;32 //定义射击间隔时间计时器

33 float m_shootTimer = 0;34

35

36

37 //Use this for initialization

38 voidStart()39 {40 //获取玩家本身的Transform 赋给 m_transform

41 m_transform = this.transform;42 //获取玩家本身的CharacterController组件 赋给 m_ch

43 m_ch = this.GetComponent();44

45 //摄像机的控制的初始化46 //获取摄像机的Transform

47 m_cameraTransform =Camera.main.transform;48 //定义一个三维向量用来表示摄像机位置 并把玩家的位置赋给它 设置摄像机初始位置

49 Vector3 pos =m_transform.position;50 //摄像机的Y轴坐标 为 本来的坐标加上上面定义的摄像机高度

51 pos.y +=m_cameraHeight;52 //把修改后的摄像机坐标重新赋给m_cameraTransform

53 m_cameraTransform.position =pos;54 //把主角的旋转角度 赋给 摄像机的旋转角度

55 m_cameraTransform.rotation =m_transform.rotation;56 //获取摄像机的角度

57 m_cameraRotation =m_transform.eulerAngles;58

59 //隐藏鼠标

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Unity自动生成敌人Unity2D AI敌人自动追踪的问题,我可以继续提供一些建议。 对于自动生成敌人,我们可以使用Unity中的预制体(Prefab)来实现。具体地说,你可以在项目中创建一个敌人预制体,包含敌人的模型、动画、碰撞体、脚本等元素。然后,你可以在场景中放置一个空对象作为敌人生成器,编写脚本来实现自动生成敌人的功能。 在脚本中,你可以使用Instantiate方法来生成敌人实例。具体地说,你可以将敌人预制体作为参数传入,生成一个新的敌人实例,并设置它的初始位置、属性等信息。你可以使用Random类来随机生成敌人的位置和属性,使得每次生成敌人都不同。 对于敌人的自动追踪,你可以使用Unity中的NavMeshAgent组件来实现。具体地说,你可以为敌人添加一个NavMeshAgent组件,使它能够在场景中自动寻路。然后,你可以编写代码来实现敌人的追踪行为,例如让敌人朝向玩家并向其移动。 除此之外,你还可以为敌人添加视野范围、攻击距离等限制,使得敌人只有在一定范围内才会追踪玩家,并只有在一定距离内才会攻击玩家。你可以使用Collider组件和Raycast来实现这些限制。 总的来说,Unity提供了很多方便的工具和功能,可以帮助你实现自动生成敌人AI追踪等功能。如果你需要更具体的代码实现或者有其他问题,可以继续向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值