Effect(十三)—— flyEffect
来源:互联网 发布:linux批量重命名 编辑:程序博客网 时间:2024/06/05 16:31
目录为:Assets/Scripts/Effect/目录下
flyEffect.cs
using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Linq;//技能飞行效果public class FlyEffect: IEffect{ public bool isAbsorb = false; //是否是吸附技能 0:不是 1:是 public bool isTurn = false; public int emitType; //保存飞行类型 //构造函数 public FlyEffect() { mType = IEffect.ESkillEffectType.eET_FlyEffect; } //对丝带拖曳类型,收回 public void DragRibbonBack() { fyDragRibbon[] mDragRibbon = obj.GetComponentInChildren<fyDragRibbon> (); foreach (fyDragRibbon ribbon in mDragRibbon) { ribbon.ForceBack (); } } public override void OnLoadComplete() { SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); Transform point; Ientity enOwner; Ientity enTarget; EntityManager.AllEntitys.TryGetValue (enOwnerKey, out enOwner); EntityManager.AllEntitys.TryGetValue (enTargetKey, out enTarget); point = enOwner.RealEntity.objPoint.transform; //拖曳效果 if (skillInfo.emitType == 8) { fyDragRibbon[] mDragRibbon = obj.GetComponentInChildren<fyDragRibbon> (); foreach (fyDragRibbon ribbon in mDragRibbon) { ribbon.mDir = dir; ribbon.Link (point); } } else { if (point != null) { GetTransform ().position = point.transform.position; } if (skillInfo.emitType == 1 || skillInfo.emitType == 4 || skillInfo.emitType == 5) { if (enTarget == null) { Quaternion rt = Quaternion.LookRotation (fixPosition - GetTransform ().position); GetTransform ().rotation = rt; } else { Quaternion rt = Quaternion.LookRotation (enTarget.RealEntity.transform.position - GetTransform ().position); GetTransform ().rotation = rt; } } else if (skillInfo.emitType == 2 || skillInfo.emitType == 6) { Quaternion rt = Quaternion.LookRotation (dir); GetTransform ().rotation = rt; } } //播放声音 //相对于Resources文件夹下 // "sound/" + 资源名 string soundPath = GameconstDefine.LoadGameSoundPath + skillInfo.sound; ResourceUnit objUnit = ResourcesManager.Instance.loadImmediate (soundPath, ResourceType.ASSET); if (objUnit.Asset != null) { AudioClip clip = objUnit.Asset as AudioClip; if (clip != null) { AudioSource audio = AudioManager.Instace.PlayEffectAudio (clip); SceneSoundManager.Instance.addSound (audio, obj); } } } private void UpdateNoTargetType() { //获取配置文件信息 SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); Vector3 flyDir = Vector3.zero; float speed = skillInfo.flySpeed; Vector3 Pos = GetTransform ().position; flyDir = dir; flyDir.Normalize (); Quaternion rt = Quaternion.LookRotation (flyDir); GetTransform ().rotation = rt; GetTransform ().rotation = rt; Pos += flyDir * Time.deltaTime * speed; GetTransform ().position = Pos; } private void UpdateTargetType() { Ientity enTarget; EntityManager.AllEntitys.TryGetValue (enTargetKey, out enTarget); SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); Vector3 flyDir = Vector3.zero; float speed = skillInfo.flySpeed; Vector3 Pos = GetTransform ().position; float distance; if (enTarget == null || enTarget.RealEntity == null || enTarget.RealEntity.objAttackPoint == null) { flyDir = fixPosition - Pos; distance = Vector3.Distance (Pos, fixPosition); } else { flyDir = enTarget.RealEntity.objAttackPoint.transform.position - Pos; distance = Vector3.Distance (GetTransform ().position, enTarget.RealEntity.objAttackPoint.position); } if (flyDir == Vector3.zero) { flyDir = Vector3.one; } flyDir.Normalize (); Quaternion rt = Quaternion.LookRotation (flyDir); GetTransform ().rotation = rt; Pos += flyDir * Time.deltaTime * speed; GetTransform ().position = Pos; if (speed * Time.deltaTime > distance) { isDead = true; } } private void UpdateTurnType() { Ientity enOwner; EntityManager.AllEntitys.TryGetValue (enOwnerKey, out enOwner); if (isTurn == false) { SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); Vector3 flyDir = Vector3.zero; float speed = skillInfo.flySpeed; Vector3 Pos = GetTransform ().position; flyDir = dir; flyDir.Normalize (); Quaternion rt = Quaternion.LookRotation (flyDir); GetTransform ().rotation = rt; GetTransform ().rotation = rt; Pos += flyDir * Time.deltaTime * speed; GetTransform ().position = Pos; } else { SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); Vector3 flyDir = Vector3.zero; float speed = skillInfo.flySpeed; Vector3 Pos = GetTransform ().position; float distance; if (enOwner == null || enOwner.RealEntity == null || enOwner.RealEntity.objAttackPoint == null) { flyDir = fixPosition - Pos; distance = Vector3.Distance (Pos, fixPosition); } else { flyDir = enOwner.RealEntity.objAttackPoint.transform.position - Pos; distance = Vector3.Distance (GetTransform ().position, enOwner.RealEntity.objAttackPoint.postion); } if (flyDir == Vector3.zero) { flyDir = Vector3.one; } flyDir.Normalize (); Quaternion rt = Quaternion.LookRotation (flyDir); GetTransform ().rotation = rt; Pos += flyDir * Time.deltaTime * speed; GetTransform ().position = Pos; if (speed * Time.deltaTime > distance) { isDead = true; } } } public override void Update() { if (isDead) { return; } base.Update (); SkillEmitConfig skillInfo = ConfigReader.GetSkillEmitCfg (skillID); //拖拽效果,不需要更新 if (skillInfo.emitType == 8) { return; } Ientity enTarget; EntityManager.AllEntitys.TryGetValue (enTargetKey, out enTarget); //目标角色消失,特效消失 if (skillInfo.emitType == 1 && enTarget == null) { isDead = true; return; } switch (skillInfo.emitType) { case 1: //有目标类型 case 4: case 5: case 7: UpdateTargetType (); break; case 2: //无目标类型 case 6: UpdateNoTargetType (); break; case 3: UpdateTurnType (); break; } }}
阅读全文
0 0
- Effect(十三)—— flyEffect
- Effect & HLSL Guide – Semantics(十三)
- Effect(一)—— fyRibbonTrail
- Effect(二)—— fyDragRibbon
- Effect(三)—— fyLinkRibbon
- Effect(四)—— AbsorbEffect
- Effect(五)—— IEffect
- Effect(六)—— BeAttackEffect
- Effect(七)—— BuffEffect
- Effect(八)—— NormalEffect
- Effect(九)—— OnlySoundEffect
- Effect(十)—— PassitiveEffect
- Effect(十一)—— SkillAreaEffect
- Effect(十二)—— ExplodeEffect
- Effect(十四)—— EffectManager
- Effect(十五)—— EffectScript
- Effect(十六)—— SetActiveScript
- Effect(十七)—— SM_MoveThis
- 设计模式--单例模式(二)双重校验锁模式
- python-面向对象高级编程
- Java-第四天
- 文章标题
- Linux 下修改Oracle 的字符集
- Effect(十三)—— flyEffect
- 007-题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- kali下nessus安装(附下载地址)
- IC射频笔记之——choke要求和原理
- 报数(约瑟夫环问题)
- Spring和SpirngMVC的注解详情
- 图像处理、计算机视觉与模式识别“SCI期刊和顶级会议”总结
- ContentProvider内容提供者
- 3.2 静止图像的压缩标准&3.3 显示设备与扫描仪