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

猜你喜欢

转载自blog.csdn.net/u012909508/article/details/82906098
今日推荐