public void Active(SceneObject_BaseInfo info)
 {
     m_BulletInfo = (SceneObject_TerminalBulletInfo)info;
     StartMove();
     StopMove();
     ProcessImpact();
 }
    public SceneObject_TerminalBulletInfo Clone()
    {
        SceneObject_TerminalBulletInfo newData = new SceneObject_TerminalBulletInfo();

        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.MoveDistanceMax     = MoveDistanceMax;
        newData.ImpactInfos         = ImpactInfos.Clone();
        newData.ExceptTargetState   = new List <TargetStateType>(ExceptTargetState);
        newData.ImpactSrcPos        = ImpactSrcPos;
        newData.Target              = Target;
        return(newData);
    }
Exemple #3
0
    /// param:Id[对应到SkillSceneObjManager中的TerminalBullet Id]
    /// example:1
    public void Trigger_TerminalShoot(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_TerminalShoot param:" + param);
#endif
        if (m_SceneObjMgr != null)
        {
            SkillSceneObjInfo sobjInfo = new SkillSceneObjInfo(param);
            SceneObject_TerminalBulletInfo bulletInfo = m_SceneObjMgr.TryGetTerminalBulletInfo(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!");
                    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_TerminalShoot null!");
            }
        }
    }