Exemple #1
0
    protected void launchMissile()
    {
        // 发射导弹
        bool success = false;

        if (mAimTarget != null)
        {
            MissileParam param = new MissileParam();
            param.mPosition = mPlayer.getPosition() + new Vector3(0.0f, 2.5f, 0.0f);
            param.mTarget   = mAimTarget;
            SceneMissile missile = mItemManager.createItem <SceneMissile>(SCENE_ITEM.SI_MISSILE, param);
            if (mPlayer.isType(CHARACTER_TYPE.CT_MYSELF))
            {
                GameTools.PLAY_AUDIO_OBJECT(missile, SOUND_DEFINE.SD_FIRE_MISSILE);
            }
            // 通知锁定玩家
            CommandCharacterNotifyMissileLocked cmdLock = newCmd(out cmdLock);
            cmdLock.mLocked  = true;
            cmdLock.mMissile = missile;
            pushCommand(cmdLock, mAimTarget);
            success = true;
        }
        // 移除瞄准状态
        CommandCharacterRemoveState cmdState = newCmd(out cmdState);

        cmdState.mState = mType;
        pushCommand(cmdState, mPlayer);
        // 发射成功后移除角色背包中的导弹道具
        if (success)
        {
            CommandCharacterRemoveItem cmdRemove = newCmd(out cmdRemove);
            cmdRemove.mItem = mPlayer.getPlayerPack().getCurItem();
            pushCommand(cmdRemove, mPlayer);
        }
    }
 public void notifyMissileLocked(SceneMissile missile, bool locked)
 {
     if (locked)
     {
         if (!mMissileLockList.Contains(missile))
         {
             mMissileLockList.Add(missile);
         }
     }
     else
     {
         mMissileLockList.Remove(missile);
     }
 }
Exemple #3
0
 public override void init()
 {
     base.init();
     mMissile = null;
     mLocked  = false;
 }
Exemple #4
0
 public void setItem(SceneMissile item)
 {
     mMissileObject = item;
     mEffective     = true;
 }