AttackEnemy人物攻击判断
AttackEnemy人物攻击判断
/// <param name="attackArea">攻击范围</param>
/// <param name="attackPowerMultiple">攻击力度(倍率)</param>
/// <param name="isDirection">攻击是否有方向性</param>
protected void AttackEnemy(List<GameObject> lisEnemys, Transform traNearestEnemy, float attackArea, int attackPowerMultiple, bool isDirection = true)
{
//参数检查
if (lisEnemys == null || lisEnemys.Count <= 0)
{
traNearestEnemy = null;
return;
}
foreach (GameObject enemyItem in lisEnemys)
{
if (enemyItem && enemyItem.GetComponent<Ctrl_BaseEnemyProperty>())
{
if (enemyItem.GetComponent<Ctrl_BaseEnemyProperty>().CurrentState != EnemyState.Death)
{
//敌我距离
float floDistance = Vector3.Distance(this.gameObject.transform.position, enemyItem.transform.position);
//攻击具有方向性
if (isDirection)
{
//定义“主角与敌人” 的方向
Vector3 dir = (enemyItem.transform.position - this.gameObject.transform.position).normalized;
//定义“主角与敌人”的夹角(用向量的“点乘”进行计算)
float floDirection = Vector3.Dot(dir, this.gameObject.transform.forward);
//如果主角与敌人在同一个方向,且在有效攻击范围内,则对敌人做伤害处理
if (floDirection > 0 && floDistance <= attackArea)
{
enemyItem.SendMessage("OnHurt", Ctrl_HeroProperty.Instance.GetCurrentATK() * attackPowerMultiple, SendMessageOptions.DontRequireReceiver);
}
}
//攻击无方向性
else
{
if (floDistance <= attackArea)
{
enemyItem.SendMessage("OnHurt", Ctrl_HeroProperty.Instance.GetCurrentATK() * attackPowerMultiple, SendMessageOptions.DontRequireReceiver);
}
}
}
}
}
}
注:此方法根据方向、距离进行播放不同的动画,来完成攻击,加入伤害后使用、具体套用方法请看后续代码(如有错误或运行Bug、请联系本人)...
AttackEnemy人物攻击判断的更多相关文章
- 《BI那点儿事》Microsoft 聚类分析算法——三国人物身份划分
		
什么是聚类分析? 聚类分析属于探索性的数据分析方法.通常,我们利用聚类分析将看似无序的对象进行分组.归类,以达到更好地理解研究对象的目的.聚类结果要求组内对象相似性较高,组间对象相似性较低.在三国数据 ...
 - cc攻击和ddos攻击
		
DoS攻击.CC攻击的攻击方式和防御方法 DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of ...
 - 浅谈 DDoS 攻击与防御
		
浅谈 DDoS 攻击与防御 原创: iMike 运维之美 什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...
 - DDos攻击的常见方法及防御方法
		
什么是DDoS? DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡 ...
 - DDOS、CC、sql注入,跨站攻击防御方法
		
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
 - DDOS攻击与防御简单阐述,列出DDOS的攻击方法和防御方法
		
参考1:https://www.hi-linux.com/posts/50873.html#%E7%BD%91%E7%BB%9C%E5%B1%82-ddos-%E6%94%BB%E5%87%BB 什么 ...
 - DDos、CC攻击与防御
		
DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",那么什么又是拒绝服务(Denial of Service)呢? ...
 - 浅谈游戏中BOSS设计的思路
		
对于大多数游戏来说,BOSS在其设计上都有着不可替代的作用,也是玩家印象最为深刻的一部分.近期自己也有在做BOSS的设计工作,有一些心得想要分享一下: 1.明确BOSS的设计目的 在设计之初,我们一定 ...
 - JAVA开发类似冒险岛的游戏Part1
		
JAVA开发类似冒险岛的游戏Part1 一.总结 二.JAVA开发类似冒险岛的游戏Part1 初学嘛) ,不过总的来说这个程序还是很有意思的.这里我重新再整理了一下,希望能帮助到其他想要开发类似程序的 ...
 
随机推荐
- Java变量的修饰符
			
1.public public的类.类属变量及方法,包内及包外的任何类均可以访问: 2.protect protected的类.类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问: 3 ...
 - vs2017 C++动态链接库的创建和调用(隐式)
			
一.VS创建动态链接库 1.打开vs新建项目 创建动态链接库 2.添加头文件.h,在h文件中添加如下内容: #pragma once//该头文件只编译一次#include<iostream> ...
 - 多线程《五》GIL全局解释器锁
			
一 引子 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native t ...
 - [AGC006] D - Median Pyramid Hard 二分
			
Description  现在有一个NN层的方块金字塔,从最顶层到最底层分别标号为1...N1...N.  第ii层恰好有2i−12i−1个方块,且每一层的中心都是对齐的. 这是一个N=4N=4的 ...
 - PEP 8 – Style Guide for Python Code
			
原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, www.yszx11.cnBarry ...
 - 【洛谷2113】看球泡妹子 DP背包
			
看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有\(N\)支球队,\(M\)场比赛.男球迷小明喜欢看 ...
 - BZOJ3156 防御准备  斜率优化dp
			
Description Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ...
 - js 三大事件(鼠标.键盘.浏览器)
			
鼠标事件: click:单击 dblclick:双击 mousedown:鼠标按下 mouseup:鼠标抬起 mouseover:鼠标悬浮(进入) mouseout:鼠标离开(离开) mousemov ...
 - caffe/proto/caffe.pb.h: No such file or director
			
caffe编译过程中遇到的为问题: fatal error: caffe/proto/caffe.pb.h: No such file or directory 解决方法: 用protoc从caffe ...
 - struts2学习笔记(五)——  OGNL
			
一.OGNL概述 1.1 什么是OGNL OGNL的全称是对象图导航语言( object-graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可 ...