unity检测范围内敌人_unity_小功能实现(敌人追踪主角)
1、敌人发现主角有两种形式:
a、看见主角(主角出现在敌人的视野之内)
b、听见主角(听见主角走路声或者是跑步声)
a:看(see)
首先判断主角是否在敌人视野角度内,那么我们只需要判断B<0.5*A能不能成立
b:听(listen)
代码如下:
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();
lastPos = GameController._instance.lastPlayerPostion;
navMeshAgent = GetComponent();
}
void Update()
{
//同步主角位置
if (lastPos != GameController._instance.lastPlayerPostion)//触发警报后玩家位置改变
{
alermPos = GameController._instance.lastPlayerPostion; //更新警报位置
lastPos = GameController._instance.lastPlayerPostion;
}
}
void OnTriggleStay(Collider other)
{
if (other.tag==Tags.player)
{
//看玩家
Vector3 startDir = transform.forward;//敌人开始朝向
Vector3 currDir = other.transform.position - transform.position; //敌人看向玩家的向量
float angle = Vector3.Angle(startDir, currDir);//敌人开始朝向与看见玩家朝向的夹角
if (angle
{
//主角在敌人的视野之内
isSeePlay = true;
alermPos = other.transform.position;//把玩家的位置设置为警报位置
GameController._instance.SeePlayer(other.transform);
}
else
{
isSeePlay = false;
}
//听脚步声音
if (anim.GetCurrentAnimatorStateInfo(0).IsName("Locomotion"))//如果玩家在运动
{
NavMeshPath path = new NavMeshPath();
if (navMeshAgent.CalculatePath(other.transform.position, path))
{
Vector3[] wayPoints = new Vector3[path.corners.Length+2];
wayPoints[0] = transform.position;
wayPoints[wayPoints.Length - 1] = other.transform.position;
for (inti = 0; i
{
wayPoints[i + 1] = path.corners[i];
}
float length = 0;
for (inti = 1; i
{
length += (wayPoints[i] - wayPoints[i - 1]).magnitude; //所有节点连接的折线的总长度
}
if (length <= sphereCollider.radius) //在听力范围内
{
alermPos = other.transform.position;
}
}
}
}
}
void OnTriggleExit(Collider other)
{
if (other.tag == Tags.player)
{
isSeePlay = false;
}
}
unity检测范围内敌人_unity_小功能实现(敌人追踪主角)相关推荐
- unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test01 : ...
- APP内打电话的小功能
// 前提 <uses-permission android:name="android.permission.CALL_PHONE" /> // 点击事件 Strin ...
- 在unity中内置一个查询物流信息功能
项目需求,在unity中内置查询物流信息的功能 需要用到查询物流 的API 在这选择的是快递100的API 首先需要申请快递100的API,官方会给你一个KEY,使用该KEY,就可以进行物流查询了 u ...
- Unity3D小功能 小技巧 小教程 小原理(持续更新...)
Unity3D小功能 小技巧 小教程 小原理(持续更新...) 1.Unity的.NET版本是2.0 按道理来说,C#能用的功能Unity也能用,但是Unity的.NET却不是最新版 要是用一些别的D ...
- Unity技能工厂——字体替换工具功能的实现!
在平常我们做任何项目的时候,工具类对于我们来说是必不可少的组成部分,因为工具类可以解决实际问题或者是优化我们已经实现的功能. 当你在做项目的时候,搭建完场景后,前场景中你所创建的UI组件中的Text的 ...
- Unity 2D横版通关 小游戏——幻城探险 C#
Unity 2D横版通关 小游戏 C# 分辨率 1920*1980 点击这里下载项目工程 本项目,为个人练习demo,美术资源原创自合作美工. 本项目涉及到的功能: 1.UI:开始游戏按钮,游戏帮助 ...
- Unity优化方面的一些小总结
前言: 我做了3年的Unity了,但是却没有深入优化模块的内容,只能怪自己做项目的时候做的内容太杂乱了.去面试的时候被面试官问道优化方面的内容的时候自己一脸懵逼.本来有机会去MK的,让自己错失了. 所 ...
- Unity iOS内购
前言:最近项目需要切换到iOS平台做一些提交审核和支付对接相关的工作,上一篇刚分享了最新的iOS10提交审核的一些坑,这篇分享一些内购相关的流程. Unity iOS内购 思路: Unity调用iOS ...
- iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))
原文链接:http://www.jianshu.com/p/36e9f012ef39 生成带 logo 的二维码 区域截屏相关 -- 由3033分享 开篇 最近项目需要搞了几个相对独立的小功能,今天有 ...
- android 隐藏图标_苹果手机竟然还有这么多隐藏小功能(一)
关注上方蓝字,获取更多精彩内容! 苹果手机清内存.一秒置顶.密码保险箱.图标隐身.....想不到的,没发现的,这里帮你全部整理好,赶快来嗨下吧!1.苹果手机 清内存 相对于以前内存比较小安卓手 ...
最新文章
- keras 的 example 文件 mnist_acgan.py 解析
- MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限...
- Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)
- 网站编程手册 服务器端,Peergine-P2P服务器端开发手册-v1.3.doc
- 平衡不完全区组设计 数据分析的SAS实践
- Spring.ImportSelector接口
- 【转】spring之任务调度
- LeetCode 916. 单词子集(计数)
- 手把手教你用python实现决策树的策略规则挖掘
- python创建虚拟环境报错typeerror_python 创建虚拟环境时报错OSError, setuptools下载失败...
- CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1
- 磊科全功能路由器上网行为管理配置指南 -- 路由器
- Android广告平台
- 201421410013 唐昭靖 作业1
- 2022年京东618活动规则:618满减规则为299减50
- App测试流程及测试点(个人整理版)-转
- 运行 skimage 报错ImportError: DLL load failed:找不到指定模块
- 异常信息:test02FlexController”不存在,wufa
- MapReduce的容错机制
- 160809310袁韬淳