1. 程式人生 > >FPS遊戲之人物控制

FPS遊戲之人物控制

最近在做策劃給的一些關於FPS型別的需求,Demo基本已經成型,接下來整理並記錄,高手略過,不喜勿噴!!!

1.主角控制移動控制EasyTouch5 外掛,這裡就不提供下載地址了,可以去官網或者百度都可以找到

2.動畫用的是Mecanim動畫系統

一、接下來說一下具體的製作過程

1.匯入外掛

在Hierarchy (層次面板)中建立 EasyTouch

新增 InoputManager

新增 JoyStick 面板會自動新增一些必要的物件 (名稱修改)

 

到此基本把主角移動面板上的設定搞定了,看下效果

 

在Hierarchy (層次面板)新增TouchPad用來控制相機

控制移動的joystick區域設定在左半屏,移動的區域設定在右半屏

效果

通過以上設定就可以實現指令碼的移動和鏡頭的旋轉

2.動畫用的是Mecanim動畫系統

狀態機(2D自由混合模式)

X,Y 為動畫引數控制移動

接下來給主角掛指令碼Fps_Move

 public ETCJoystick joystickMove;
 private Animator avatar;

    void Awake () {
        avatar = this.GetComponentInChildren<Animator>();
        
        //easttouch5 事件寫法
        joystickMove.onMove.AddListener(JoystickMove);
        joystickMove.onMoveEnd.AddListener(JoystickMoveEnd);
    }
    private void JoystickMoveEnd() {
        //avatar.SetFloat("Speed", 0);
        //avatar.SetFloat("Direction", 0);
        avatar.SetFloat("X", 0);
        avatar.SetFloat("Y", 0);
    }

    private void JoystickMove(Vector2 arg0) {
        float joyX = arg0.x;
        float joyY = arg0.y;
        if (joyX != 0 || joyY != 0 || avatar) {
            //通用混合(1D)
            //avatar.SetFloat("Speed", (joyX * joyX + joyY * joyY));
            //avatar.SetFloat("Direction", Mathf.Atan2(joyX, joyY) * 180.0f / 3.14159f);

            //2D自由混合模式
            avatar.SetFloat("X", joyX, 10, 100 * Time.deltaTime);
            avatar.SetFloat("Y", joyY, 10, 100 * Time.deltaTime);

        }

 

這樣主角就可以通過easytouch的控制播放動畫了