//1、只攻击正前方的单位,向前发射一条射线,攻击碰到的单位RaycastHit hit;//range 射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位if(Physics.Raycast(unit.thisT.position, unit.thisT.forward, out hit, range, maskTarget)){Unit targetTemp=hit.collider.gameObject.GetComponent();if(targetTemp!=null && targetTemp.HPAttribute.HP>0){target=targetTemp;if(attackMode==_AttackMode.StopNAttack){if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();unit.StopMoving();}}}//2、以己方单位为圆心的某一半径长度内//返回相交球的所有碰撞体Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);//if(cols!=null && cols.Length>0) Debug.Log(cols[0]);if(cols.Length>0){Collider currentCollider=cols[Random.Range(0, cols.Length)];Unit targetTemp=currentCollider.gameObject.GetComponent();if(targetTemp!=null && targetTemp.HPAttribute.HP>0){target=targetTemp;if(attackMode==_AttackMode.StopNAttack){if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();unit.StopMoving();}}}//3、以己方单位为圆心的扇形范围内Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);//if(cols!=null && cols.Length>0) Debug.Log(cols[0]);if(cols.Length>0){Collider currentCollider=cols[0];foreach(Collider col in cols){Quaternion targetRot=Quaternion.LookRotation(col.transform.position-unit.thisT.position);if(Quaternion.Angle(targetRot, unit.thisT.rotation)Unit targetTemp=currentCollider.gameObject.GetComponent();if(targetTemp!=null && targetTemp.HPAttribute.HP>0){target=targetTemp;if(attackMode==_AttackMode.StopNAttack){if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();unit.StopMoving();}break;}}}}
推荐整理分享判断攻击范围(攻击判定是什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:判断攻击范围的方法,攻击距离怎么看,攻击范围是什么,攻击判定是什么意思,判断攻击范围的方法,判断攻击范围的指令,判断攻击范围的标准,判断攻击范围的标准,内容如对您有帮助,希望把文章链接给更多的朋友!
unity商店demo学习:跑酷游戏 本文素材和代码全部来自unityassetstore里面的3DInfiniteRunnerToolkit项目步骤场景一:TitleScene1搭建开始界面场景这个场景是开启游戏的第一个界面,用于选择
跑酷角色左右移控制 //使角色能够左右移动voidMoveLeftOrRight(){if(Input.GetKey(KeyCode.A)){if(currentHorizontalDistance=-maxHorizontalDistance){return;}transform.Translate(Vector3.left*Time.deltaTime*horizontalMo
摄像机跟随与摄像机晃动 usingUnityEngine;usingSystem.Collections;publicclassCameraFollows:MonoBehaviour{privateVector3position;publicTransformtarget;publicfloatdistance;publicfloattargetHeight;publicfloatPitchAngle;privatefl