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();
 }
Esempio n. 3
0
    /// 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!");
            }
        }
    }