public SceneObject_AttractBulletInfo Clone() { SceneObject_AttractBulletInfo newData = new SceneObject_AttractBulletInfo(); 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.MoveImpactRadius = MoveImpactRadius; newData.ImpactDuration = ImpactDuration; newData.ImpactInterval = ImpactInterval; newData.ImpactAttractDuration = ImpactAttractDuration; newData.ImpactAttractRange = ImpactAttractRange; newData.ImpactAttractOffPerSecond = ImpactAttractOffPerSecond; newData.ImpactAttractOffMin = ImpactAttractOffMin; newData.ImpactAttractingImpactInterval = ImpactAttractingImpactInterval; newData.ImpactInfos = ImpactInfos.Clone(); newData.ImpactEndInfos = ImpactEndInfos.Clone(); newData.ImpactEndFromRoleInfos = ImpactEndFromRoleInfos.Clone(); newData.ImpactSrcPos = ImpactSrcPos; newData.Target = Target; return(newData); }
public void Active(SceneObject_BaseInfo info) { m_BulletInfo = (SceneObject_AttractBulletInfo)info; gameObject.transform.position = m_BulletInfo.MoveStartPos; gameObject.transform.rotation = Quaternion.LookRotation(m_BulletInfo.MoveDir); StartMove(); }
/// param:Id[对应到SkillSceneObjManager中的AttractBullet Id] /// example:1 public void Trigger_AttractShoot(string param) { #if SHOOTER_LOG Debug.Log("Trigger_AttractShoot param:" + param); #endif if (m_SceneObjMgr != null) { SkillSceneObjInfo sobjInfo = new SkillSceneObjInfo(param); SceneObject_AttractBulletInfo bulletInfo = m_SceneObjMgr.TryGetAttractBulletInfo(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_AttractShoot bone miss!"); 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.SceneObjInfo.EffectLiftTime = float.MaxValue; 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_AttractShoot null!"); } } }