菜鸟的Unity自学日志9 添加第二个敌人幽灵

回顾操作

与前面相同的操作,把幽灵对象加入prefab,并为其创建一个Anmator controllor拖入它的Animator组件,打开这个Anmator controllor将动画里的Ghost@Walk拖入其中。
然后添加胶囊对碰组件和刚体组件并分别作如下设置
在这里插入图片描述
在这里插入图片描述
其中勾选刚体组件的Is Kinematic是为了使物体不受外力的影响,但它依然可以被碰撞,可以解决之前的碰撞后坐标移动的问题。

为幽灵添加视线

在先前我们已经有了gargoyle的视线对象PointOfView
在这里插入图片描述
为了避免重复操作我们将该对象加入prefabs预设,拖动该对象到Assets/prefab文件中。
在这里插入图片描述
选择Open Prefab,再拖动一次,或是直接打开Gargoyle的prefab拖入。
成功后如下图:
在这里插入图片描述
再进入Ghost的prefab,将Assets/prefabs中的PointOfView拖入其中,如下图
在这里插入图片描述
在Inspertor窗口对其属性作如下设置
在这里插入图片描述
最后效果如下
在这里插入图片描述

添加导航网格代理组件(Nav Mesh Agent Component)

我们需要幽灵能在游戏环境中移动,将有两个组件来完成这件事
Nav Mesh Agentscript
为Ghost对象添加一个Nav Mesh Agent组件,并对其作如下设置
在这里插入图片描述
效果如下图
在这里插入图片描述
保存

创建一个新脚本命名为WaypointPatrol

创建完毕后拖入Ghost对象的frefab预设
在这里插入图片描述

编辑:

思路:设置导航网格代理的目的地,并逐帧检查它是否到达了目的地

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;//NavMeshAgent类所在的命名空间


public class WaypointPatrol : MonoBehaviour
{
    public NavMeshAgent navMeshAgent;
    public Transform[] waypoints;//一个存储Transform类型数据的数组,主要为了存储多个目的地
    int m_CurrentWaypointIndex;//用于检索数组的每个元素
    // Start is called before the first frame update
    void Start()
    {
        navMeshAgent.SetDestination(waypoints[0].position);//将该数组的第一个元素设为初始目标
    }
    // Update is called once per frame
    void Update()
    {
        if(navMeshAgent.remainingDistance < navMeshAgent.stoppingDistance)//如果剩余的距离小于先前设置的0.2,则视为到达目标地 
        {
            m_CurrentWaypointIndex = (m_CurrentWaypointIndex + 1) % waypoints.Length;//计数器,m_CurrentWaypointIndex的值始终在0到waypoints.Length之间循环
            navMeshAgent.SetDestination(waypoints[m_CurrentWaypointIndex].position);//切换下一个目标,最终回到初始地点
        }
    }
}

完成后作如下设置,将Nav Mesh Agent组件拖入以下属性中
在这里插入图片描述
保存

额外放置三个Ghost

退出prefab选中Ghost对象,按快捷键Ctrl+D,快速复制
分别设置他们的坐标为(-5.3,0,-3.1),(1.5,0,4),(3.2,0,6.5),(7.4,0,-3)

创建和定位幽灵的路径

创建一个空对象重命名为Waypoint
在这里插入图片描述
用复制Ghost对象的方法,如此而外复制9个Waypoint
在这里插入图片描述
选中Ghost对象,将前两个Waypoint依次拖入,Waypoint Patrol中的Waypoints即脚本中声明的数组
在这里插入图片描述
分别设置两个Waypoint对象的坐标为(-5.3,0,6.7),(-5.5,0,-4.5)。
对Ghost(1)和Ghost(3)采取同样的操作
分别设置位置为
Ghost(1):Waypoint(2)(1.2,0,7.7),Waypoint(3)(0.9,0,-3.5);
Ghost(3):Waypoint(8)(3.2,0,-5),Waypoint(9)(7.4,0,-2)。
再将剩下的Waypoint对象对象都拖入Ghost(2)的Waypoints数组中并如下设置
Waypoint (4) (3.2, 0, 5.6)
Waypoint (5) (3.2, 0, 12.3)
Waypoint (6) (6.5, 0, 12.3)
Waypoint (7) (6.5, 0, 5.6)
同样的方法再添加两个石像鬼分别设置其坐标为
Gargoyle (1) position (-2.6, 0, -8.5).
Gargoyle (1) rotation (0, 30, 0).
Gargoyle (2) position (-4.8, 0, 8.9).
另外为了便于查看,可以创建一些空的类把你的游戏对象们进行分类如下图
在这里插入图片描述

下一节

音频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值