我们在游戏一些逃生游戏中很可能让主角不能在怪物前方的三角区域内, 如果存在里面玩家就会被发现.  这种判断的该如何实现呢?

请看下图:  (此图是主角探索怪物)

using UnityEngine;
using System.Collections;
using UnityEditor;
using System;public class Test : MonoBehaviour {public Transform a;public Transform b;public Transform c;public Transform d;public TextMesh 正角;public TextMesh 补角;public TextMesh distanceText;public TextMesh angelText;public TextMesh isInEayText;public TextMesh dcDistanceText;public float distance;public float angle;// Update is called once per framevoid Update () {Vector3 ac = a.position - c.position;Vector3 bc = b.position - c.position;Vector3 cb = c.position - b.position;//计算cd的距离float dcDistance = Mathf.Abs(Vector3.Distance(d.position, c.position));dcDistanceText.text = "DC的距离: " + dcDistance;/** cos<A,B>=(ac+bd)/(根号a*a+b*b)(根号c*c+d*d)* 两向量夹角余弦等于向量数量积除以两向量模的乘积 */double hudu = Math.Acos((ac.x * bc.x+ ac.y * bc.y)/ (Mathf.Sqrt(ac.x * ac.x + ac.y * ac.y)* Mathf.Sqrt(bc.x * bc.x + bc.y * bc.y)));//弧度转换角度double jiajiao = hudu / Math.PI * 180;正角.text = jiajiao + "度";补角.text = (180 - jiajiao) + "度";distanceText.text = "玩家看得到的距离: " + distance;angelText.text = "玩家看得到的角度: " + angle;//判断敌人是否在视线当中if (jiajiao >= 0 && jiajiao <= angle && dcDistance <= distance){isInEayText.text = "敌人是否在玩家视线内: true";}else {isInEayText.text = "敌人是否在玩家视线内: false";}
    }//绘制线段public void OnDrawGizmos() {Gizmos.DrawLine(a.position, b.position);Gizmos.DrawLine(a.position, c.position);Gizmos.DrawLine(b.position, c.position);Gizmos.DrawLine(b.position, d.position);Gizmos.DrawLine(a.position, d.position);}}

项目下载地址:  http://yunpan.cn/cdPpwnbrja5xA  访问密码 4146

转载于:https://www.cnblogs.com/plateFace/p/4719676.html

人物角色群体攻击判定四(三角区域判断)相关推荐

  1. 人物角色群体攻击判定二(叉乘来判断敌人的位置)

    建议阅读: 判断敌人在玩家的某一个区域: http://www.cnblogs.com/plateFace/p/4716799.html 我们可以根据玩家和敌人的坐标, 进行叉乘来获取一个向量可以用它 ...

  2. 人物角色群体攻击判定(一)

    我们制作3D动作游戏的时候,常常主人公是一对多人进行攻击,或者敌人在角色前方一定范围内进行攻击. 我们怎么实现这种效果呢? 1. 使用触发器(多体攻击) 方便调试,可视化(推荐) 2. 运用点乘和叉乘 ...

  3. 函数在任意三角区域二重积分的计算

    函数在任意三角区域二重积分的计算 三角区域变换 设有三角形△ABC\triangle ABC△ABC其中A:(x1,y1),B:(x2,y2),C(x3,y3)A:(x_1,y_1),B:(x_2,y ...

  4. 数字化转型不仅能进一步便利人民生活,也能促进长三角区域经济高质量发展

    未来,数字化转型不仅能进一步便利人民生活,也能促进长三角区域经济高质量发展,实现共建共治共享. 近日,沪苏浙皖三省一市网信办在沪召开协同推进数字化转型联席会议. 优势明显 三省一市网信办一致认为,积极 ...

  5. Android 仿PhotoShop调色板应用(四) 不同区域颜色选择的颜色生成响应

     Android 仿PhotoShop调色板应用(四) 不同区域颜色选择的颜色生成响应  上一篇讲过了主体界面的绘制,这里讲解调色板应用中的另外一个核心: 颜色选择及生成. ColorPcikerVi ...

  6. WPF入门(四)-线形区域Path内容填充之填充图(ImageBrush)

    WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 原文:WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 前面我们提到了Linear ...

  7. zxing qr区域判断_如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?

    zxing qr区域判断 在本文中,我们将研究如何使用Zxing QR代码生成库和JFreeSVG库在Java中创建QR Code SVG图像. QR码生成 下面的代码使用Zxing库创建一个表示QR ...

  8. 请你设计一个用于填充n阶方阵的上三角区域的程序。

    给大家分享一个老夫刚刚弄懂的代码,说实话,博主对这个填充N阶方阵的程序真心是不擅长啊,这个程序是从网上搞来的,废话不说了,直接上题:方阵的主对角线之上称为"上三角".请你设计一个用 ...

  9. html css学习笔记~ 基础知识和页面显示的四个区域内容及display:flex 等常用的一些命令(手画)

    一般 在html文件中输入<link href=".../xxx.css" rel="stylesheet"/> 通过这样的外部样式联系 css & ...

  10. 计算机键盘一般分四个区域 其中,四个键盘区域分别在哪里

    网友求助:四个键盘区域分别在哪里 问题 最佳答案 小键盘,基本键区F1到F12总之键盘分四个区 推荐答案 小键盘,基本键区F1到F12总之键盘分四个区 其它回答 昵称:hnpds2013的网友回答 主 ...

最新文章

  1. SAP RETAIL MM42维护的采购价格,等同于ME11ME12的效果
  2. 【android-tips】installfailedinsufficientstorage解决方案
  3. Golang 使用Protocol Buffer 案例
  4. 算法题存档20200505
  5. 电力企业信息化建设方案之调度信息报送系统
  6. 巧用DictionaryTKey,TValue,完成客户需求
  7. 高可用Redis(四):列表,集合与有序集合
  8. rapidminer java_在Java应用程序RapidMiner的整合(Integration of RapidMiner i
  9. python用lda主题_python下进行lda主题挖掘(二)——利用gensim训练LDA模型
  10. SEO过程中外链的误区
  11. 树梅派应用25:宅男必备:配备电子纸屏幕的抽纸盒
  12. 【C语言/入门游戏】猜数字,关机指令游戏及go to语句
  13. 计算机组成原理-I/O系统
  14. V-for and slot-scoped报错问题
  15. Tomcat部署步骤
  16. 2015百度竞价之如何增加有效点击率?
  17. 宿松中学2021高考成绩查询,宿松2018高考成绩公布
  18. 正定矩阵、负定矩阵、半正定矩阵、半负定矩阵
  19. 橘子平台origin安装闪退?
  20. RuntimeError: unsupported operation: more than one element of the written-to tensor refers to a sing

热门文章

  1. 计算机学院特色迎新标语,开学迎新口号
  2. 【POJ3335】Rotating Scoreboard(多边形的内核-----半平面交+特殊情况)
  3. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  4. java shell文件_Java 文件读写示例1
  5. 416.分割等和子集
  6. 332.重新安排行程
  7. 用本地计算机做服务器提供外网访问:花生壳+tomcat
  8. ServletRequest--从html页面获取信息
  9. array在java_在Java中的ArrayLists之间进行转换
  10. Ribbon和Feign的对比-带简易例子