游戏开发记录--敌人追寻玩家
今天开始记录自己游戏开发的过程,算是自己的一个笔记吧。
首先让敌人追寻玩家的方法有三种。
第一种,玩家出现在敌人的视野内
简单的来说,就是当敌人“看见”玩家的时候(玩家出现在敌人的视野内),让敌人开始靠近玩家。
这种情况得先在敌人身上绑定一个摄像机,然后当摄像机内出现玩家,且出现的范围比较大的时候,让敌人开始追寻玩家。
(具体在unity中的体现,α为摄像机与玩家之间的夹角)
当α角大于摄像机视野角的一半的时候,就认为敌人看到了玩家,并且进行追寻。
第二种,玩家的声音被敌人所“听到”
这种我在unity中不好表示出来,我画图出来表示
第三种,玩家进入敌人的圆形侦测范围内
给敌人身上挂一个shere,然后取消掉Mesh Renderer组件,在OnTriggerEnter(Collider other)函数内进行判断和让敌人进行追寻
具体的实现代码片段如下
using UnityEngine;
using System.Collections;
using UnityEngine.AI;
public class EnemySight : MonoBehaviour {
private float seeAngle=120;//敌人视野角度
private bool isSeePlay = false;
private Vector3 lastPos;// 玩家的最后位置
private Vector3 alermPos=Vector3.zero; //警报位置
private Animator anim; //主角动画,作用是判断玩家是否在运动
private SphereCollidersphereCollider;//敌人身上的碰撞器,该碰撞器是用来触发检测主角是否在敌人可见,可听范围内
private NavMeshAgentnavMeshAgent; //AI组件
void Awake()
{
anim = GameObject.FindGameObjectWithTag(Tags.player).GetComponent