FPS游戏之人物控制

最近在做策划给的一些关于FPS类型的需求,Demo基本已经成型,接下来整理并记录,高手略过,不喜勿喷!!!

1.主角控制移动控制EasyTouch5 插件,这里就不提供下载地址了,可以去官网或者百度都可以找到

2.动画用的是Mecanim动画系统

一、接下来说一下具体的制作过程

1.导入插件

在Hierarchy (层次面板)中创建 EasyTouch

FPS游戏之人物控制

添加 InoputManager

添加 JoyStick 面板会自动添加一些必要的对象 (名称修改)

FPS游戏之人物控制

FPS游戏之人物控制

FPS游戏之人物控制

FPS游戏之人物控制

 

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

FPS游戏之人物控制

 

在Hierarchy (层次面板)添加TouchPad用来控制相机

FPS游戏之人物控制

控制移动的joystick区域设置在左半屏,移动的区域设置在右半屏

效果

FPS游戏之人物控制

通过以上设置就可以实现脚本的移动和镜头的旋转

2.动画用的是Mecanim动画系统

FPS游戏之人物控制

状态机(2D*混合模式)

FPS游戏之人物控制

FPS游戏之人物控制

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的控制播放动画了