public void Active(SceneObject_BaseInfo info) { m_BulletInfo = (SceneObject_LinearBulletInfo)info; gameObject.transform.position = m_BulletInfo.MoveStartPos; gameObject.transform.rotation = Quaternion.LookRotation(m_BulletInfo.MoveDir); StartMove(); ProcessImpact(); }
public SceneObject_LinearBulletInfo Clone() { SceneObject_LinearBulletInfo newData = new SceneObject_LinearBulletInfo(); newData.Id = Id; newData.Attacker = Attacker; newData.SceneObjInfo = SceneObjInfo.Clone(); newData.BulletHitEffectInfo = BulletHitEffectInfo.Clone(); newData.BulletEndEffectInfo = BulletEndEffectInfo.Clone(); newData.MoveStartPos = MoveStartPos; newData.MoveDir = MoveDir; newData.MoveSpeed = MoveSpeed; newData.MoveDistanceMax = MoveDistanceMax; newData.ImpactInfos = ImpactInfos.Clone(); newData.ExceptTargetState = new List <TargetStateType>(ExceptTargetState); newData.ImpactSrcPos = ImpactSrcPos; newData.Target = Target; return(newData); }
/// param:Id[对应到SkillSceneObjManager中的LinearBullet Id] /// example:1 public void Trigger_Shoot(string param) { #if SHOOTER_LOG Debug.Log("Trigger_Shoot param:" + param); #endif if (m_SceneObjMgr != null) { SkillSceneObjInfo sobjInfo = new SkillSceneObjInfo(param); SceneObject_LinearBulletInfo bulletInfo = m_SceneObjMgr.TryGetLinearBulletInfo(sobjInfo.Id); MasterWeaponType masterType = (MasterWeaponType)(sobjInfo.ExtractNumeric <int>(0, 0)); GameObject curMainWeapon = TriggerImpl.GetCurMainWeapon(this.gameObject, masterType); if (bulletInfo != null && bulletInfo.SceneObjInfo != null && curMainWeapon != null) { Transform efSpark = LogicSystem.FindChildRecursive(curMainWeapon.transform, Script_Util.ForceNotifyEffectBone(bulletInfo.SceneObjInfo.EffectParentBone)); if (null == efSpark) { Debug.Log("Trigger_Shoot bone miss! id:" + bulletInfo.Id); return; } bulletInfo = bulletInfo.Clone(); bulletInfo.Attacker = this.gameObject; bulletInfo.SceneObjInfo.EffectPos += efSpark.transform.position; bulletInfo.MoveStartPos += efSpark.transform.position; bulletInfo.MoveDir = Quaternion.Euler(efSpark.transform.rotation.eulerAngles + bulletInfo.MoveDir) * Vector3.forward; bulletInfo.ImpactSrcPos += new Vector3(gameObject.transform.position.x, efSpark.transform.position.y, gameObject.transform.position.z); GameObject tBulletObj = TriggerImpl.PlayEffect(bulletInfo.SceneObjInfo); tBulletObj.SendMessage("Active", bulletInfo); } else { Debug.Log("Trigger_Shoot null!"); } } }