Example #1
0
 public override void keyProcess(float elapsedTime)
 {
     if (mGameInputManager.getKeyCurrentDown(KeyCode.A))
     {
         CommandCharacterUseItem cmd = newCmd(out cmd);
         cmd.mItemIndex = mPlayer.getPlayerPack().getSelectedIndex();
         pushCommand(cmd, mPlayer);
     }
     //切换道具
     if (mGameInputManager.getKeyCurrentDown(KeyCode.B))
     {
         if (mPlayer.getPlayerPack().canChangeSelection())
         {
             pushCommand <CommandCharacterSelectItem>(mPlayer);
         }
     }
     // 仅测试用
     if (mGameInputManager.getKeyCurrentDown(KeyCode.Alpha1))
     {
         CommandCharacterGetItem cmd = newCmd(out cmd);
         cmd.mItemType = PLAYER_ITEM.PI_MISSILE;
         pushCommand(cmd, mPlayer);
     }
     if (mGameInputManager.getKeyCurrentDown(KeyCode.Alpha2))
     {
         CommandCharacterGetItem cmd = newCmd(out cmd);
         cmd.mItemType = PLAYER_ITEM.PI_SHIELD;
         pushCommand(cmd, mPlayer);
     }
     if (mGameInputManager.getKeyCurrentDown(KeyCode.Alpha3))
     {
         CommandCharacterGetItem cmd = newCmd(out cmd);
         cmd.mItemType = PLAYER_ITEM.PI_TURBO;
         pushCommand(cmd, mPlayer);
     }
     if (mGameInputManager.getKeyCurrentDown(KeyCode.Alpha4))
     {
         CommandCharacterGetItem cmd = newCmd(out cmd);
         cmd.mItemType = PLAYER_ITEM.PI_LAND_MINE;
         pushCommand(cmd, mPlayer);
     }
     // 上方向键增加速度
     if (mGameInputManager.getKeyCurrentDown(KeyCode.UpArrow))
     {
         CommandCharacterHardwareSpeed cmdPassValue = newCmd(out cmdPassValue, false);
         cmdPassValue.mSpeed = mPlayer.getCharacterData().mSpeed + 1.0f;
         pushCommand(cmdPassValue, mPlayer);
     }
     // 下方向键降低速度
     if (mGameInputManager.getKeyCurrentDown(KeyCode.DownArrow))
     {
         CommandCharacterHardwareSpeed cmdPassValue = newCmd(out cmdPassValue, false);
         cmdPassValue.mSpeed = mPlayer.getCharacterData().mSpeed - 1.0f;
         pushCommand(cmdPassValue, mPlayer);
     }
     if (mGameInputManager.getKeyCurrentDown(KeyCode.Space))
     {
         pushCommand <CommandCharacterJump>(mPlayer);
     }
 }
Example #2
0
    public override void enter(StateParam param)
    {
        // 禁用动态拖尾
        mPlayer.activeTrail(false, false);
        // 将速度降低到0
        CommandCharacterHardwareSpeed cmdHardwareSpeed = newCmd(out cmdHardwareSpeed);

        cmdHardwareSpeed.mSpeed         = 0.0f;
        cmdHardwareSpeed.mExternalSpeed = false;
        pushCommand(cmdHardwareSpeed, mPlayer);
    }
Example #3
0
    public override void enter(StateParam param)
    {
        mTurbo      = mObjectManager.createObject(mPlayer.getObject(), GameDefine.R_PARTICLE_PREFAB_PATH + GameDefine.TURBO);
        mTurbo.name = "Turbo";
        mTurbo.transform.localPosition = new Vector3(0.5f, -3.0f, 2.0f);
        float speed = mPlayer.getCharacterData().mSpeed;
        CommandCharacterHardwareSpeed cmd = newCmd(out cmd);

        cmd.mSpeed         = speed + GameUtility.getSprintIncreaseSpeed(speed);
        cmd.mExternalSpeed = false;
        pushCommand(cmd, mPlayer);
        // 提升加速度,加速度会自动恢复到正常值
        CharacterSpeedHardware component = mPlayer.getFirstComponent <CharacterSpeedHardware>();

        component.setAcceleration(50.0f);
        if (mPlayer.isType(CHARACTER_TYPE.CT_MYSELF))
        {
            GameTools.PLAY_AUDIO_UI(mScriptGlobalAudio.getAudioWindow(), SOUND_DEFINE.SD_SPRINT);
        }
    }
Example #4
0
    public override void execute()
    {
        CharacterMyself myself = mCharacterManager.getMyself();

        // 速度
        if (myself != null && myself.getProcessExternalSpeed())
        {
            CommandCharacterHardwareSpeed cmdSpeed = newCmd(out cmdSpeed, false);
            cmdSpeed.mDirectSpeed   = false;
            cmdSpeed.mExternalSpeed = true;
            if (GameUtility.mReadRPM)
            {
                cmdSpeed.mSpeed = GameUtility.HWSToMS(mRPM);
            }
            else
            {
                cmdSpeed.mSpeed = GameUtility.HWSToMS(mPower);
            }
            pushCommand(cmdSpeed, mCharacterManager.getMyself());
        }
        // 按键
        KeyCode[] key   = new KeyCode[] { KeyCode.A, KeyCode.B, KeyCode.X, KeyCode.Y };
        int       count = key.Length;

        for (int i = 0; i < count; ++i)
        {
            mGameInputManager.setKeyState(key[i], isKeyDown(i));
        }
        // 转向
        mGameInputManager.setStickAngle(mAngle);
        if (mScriptDebugInfo != null)
        {
            mScriptDebugInfo.setOrginStackAngle(mAngle);
            mScriptDebugInfo.setRPM(mRPM);
            mScriptDebugInfo.setPower(mPower);
        }
    }
Example #5
0
    public override void update(float elapsedTime)
    {
        base.update(elapsedTime);
        int   targetIndex     = mWayPointManager.getPointIndexFromDistance(mData.mRunDistance + mTargetDistanceOffset, mData.mCurWayPoint);
        float targetDirection = mWayPointManager.getPointDirection(targetIndex);
        // 自身的朝向往目标点所在路段的朝向靠拢
        float curDirection = mCharacter.getRotation().y;

        MathUtility.adjustAngle180(ref curDirection);
        float dirDelta = targetDirection - curDirection;

        // 如果目标方向与当前方向的差值超过180,则转换到0-360再计算
        if (Mathf.Abs(dirDelta) > 180.0f)
        {
            MathUtility.adjustAngle360(ref curDirection);
            MathUtility.adjustAngle360(ref targetDirection);
            dirDelta = targetDirection - curDirection;
        }
        mData.mTurnAngle = MathUtility.lerp(mData.mTurnAngle, dirDelta, 0.1f);
        float curTargetSpeed = mAIBaseSpeed + mData.mNumber;
        CharacterSpeedHardware speedHardware = mCharacter.getFirstComponent <CharacterSpeedHardware>();

        if (!MathUtility.isFloatEqual(speedHardware.getTargetSpeed(), curTargetSpeed) && mCharacter.getProcessExternalSpeed())
        {
            CommandCharacterHardwareSpeed cmd = newCmd(out cmd);
            cmd.mSpeed         = curTargetSpeed;
            cmd.mExternalSpeed = true;
            pushCommand(cmd, mCharacter);
        }
        // 如果AI背包中有导弹,则一直搜寻可以瞄准的目标
        int missileIndex = mCharacter.getPlayerPack().getFirstItemIndex(PLAYER_ITEM.PI_MISSILE);

        if (missileIndex != -1 && !mCharacter.hasState(PLAYER_STATE.PS_AIM))
        {
            bool hasAvailableTarget = false;
            SortedDictionary <int, CharacterOther> allCharacterList = mRoleSystem.getAllPlayer();
            float playerDistance = mCharacter.getCharacterData().mRunDistance;
            foreach (var item in allCharacterList)
            {
                if (item.Value != mCharacter)
                {
                    float curDistance = item.Value.getCharacterData().mRunDistance - playerDistance;
                    if (MathUtility.isInRange(curDistance, 0.0f, GameDefine.MAX_LAUNCH_MISSILE_DISTANCE))
                    {
                        if (UnityUtility.whetherGameObjectInScreen(item.Value.getWorldPosition()))
                        {
                            hasAvailableTarget = true;
                            break;
                        }
                    }
                }
            }
            if (hasAvailableTarget)
            {
                // 需要选中导弹
                CommandCharacterSelectItem cmdSelect = newCmd(out cmdSelect);
                cmdSelect.mIndex = missileIndex;
                pushCommand(cmdSelect, mCharacter);
                // 给角色添加瞄准状态
                CommandCharacterAddState cmdCharacterAddState = newCmd(out cmdCharacterAddState);
                cmdCharacterAddState.mState = PLAYER_STATE.PS_AIM;
                pushCommand(cmdCharacterAddState, mCharacter);
            }
        }
    }