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