游戏开发学习笔记(十四)角色攻击处理
来源:互联网 发布:聊骚软件靠谱吗 编辑:程序博客网 时间:2024/06/05 15:06
思路:
先获取角色前面的敌人
通过攻击类别攻击敌人
新建脚本Player Attack,编辑脚本
public class PlayerAttack : MonoBehaviour { public enum AttackRange { Forward, Around } public static PlayerAttack _instance; public Animator Anim; public float forward_dis = 4f; //向前攻击的距离 public float around_dis = 4f; //周围攻击的距离 void Awake() { _instance = this; }void Update () { } //通过攻击类型释放攻击 public void OnAttack_SkillBtn(bool isPress, AttackType attackType) { ArrayList array = null; if (PlayerControl._instance.animatorInfo.normalizedTime > 0.5f) { switch (attackType) { case AttackType.Basic: array = GetEnemyInAttackRange(AttackRange.Forward); foreach (GameObject go in array) go.SendMessage("Hurt", PlayerState._instance.ReadAttack()); break; case AttackType.Skill01: array = GetEnemyInAttackRange(AttackRange.Around); foreach (GameObject go in array) go.SendMessage("Hurt", PlayerState._instance.ReadAttack() * 1.2f); break; case AttackType.Skill02: array = GetEnemyInAttackRange(AttackRange.Forward); foreach (GameObject go in array) go.SendMessage("Hurt", PlayerState._instance.ReadAttack() * 1.5f); break; case AttackType.Skill03: array = GetEnemyInAttackRange(AttackRange.Around); foreach (GameObject go in array) go.SendMessage("Hurt", PlayerState._instance.ReadAttack() * 1.8f); break; } } } //得到在范围之内的敌人 ArrayList GetEnemyInAttackRange(AttackRange attackRange) { ArrayList arrayList = new ArrayList(); if (attackRange == AttackRange.Around) //范围攻击不需要判断是否在前面,只需判断距离时否在攻击范围内 { foreach (GameObject go in TransformScripManage._instance.enemyList) { Vector3 pos = transform.InverseTransformPoint(go.transform.position); float distance = Vector3.Distance(Vector3.zero, pos); //敌人跟主角的距离 if (distance <= around_dis) { arrayList.Add(go); } } } if (attackRange == AttackRange.Forward) //在向前的攻击范围内 { foreach(GameObject go in TransformScripManage._instance.enemyList) //遍历敌人 { Vector3 pos = transform.InverseTransformPoint(go.transform.position); //把敌人坐标转化为主角的局部坐标 if (pos.z > -0.2f) //如果在主角前面 { float distance = Vector3.Distance(Vector3.zero, pos); //敌人跟主角的距离 if (distance <= forward_dis) arrayList.Add(go); } } } return arrayList; } }点击攻击按钮时,调用这里的方法即可攻击敌人
阅读全文
0 0
- 游戏开发学习笔记(十四)角色攻击处理
- IOS开发学习笔记(十四)——处理视频
- 游戏开发学习笔记(二)创建游戏角色场景的制作
- Android开发秘籍学习笔记(十四)
- 学习笔记(十四)
- php学习笔记(十四)php的图像处理函数
- Android游戏开发之触摸轨迹曲线的实现处理(二十四)
- 游戏开发中的人工智能(十四):神经网络
- 游戏开发基础(十四)
- fs4412开发板学习笔记(十四)
- 游戏开发 学习笔记
- java学习笔记(十四)
- Linux学习笔记(十四)
- 学习笔记(二十四)
- Java学习笔记(十四)
- Java学习笔记(十四)
- ArcGIS学习笔记(十四)
- Java学习笔记(十四)
- HTML5是什么?为你详细解读神奇的HTML5!
- Android_Handler机制
- 神经网络之激活函数(activation function)
- AngularJs增删改查
- IntelliJ IDEA 2017 激活
- 游戏开发学习笔记(十四)角色攻击处理
- Dubbo通信模型
- 按键精灵设置脚本过期日期
- JavaWeb自主学习--html(一),day1
- workerman实现直播
- iOS .framework静态库的封装
- jQuery中的ready和load事件
- 基于Tcp协议的简单Socket通信实例(JAVA)
- JAVA反射(2):泛型相关周边信息获取