网站公告 | [优惠活动] 双十一奖励领取处
查看: 486|回复: 0
收起左侧

[图文教程] Unity 中EasyTouch和播放动画的结合

[复制链接]

[图文教程] Unity 中EasyTouch和播放动画的结合[复制链接]

天长第9 发表于 2017-1-6 10:42:01 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  0 浏览:  486
首先 我们引入Easy Touch插件,在Joystick X to 把我们的人物拖进去 这里是指摇杆的X轴方向控制人物物体的X轴运动
同理 下面的是摇杆Y轴控制Z轴方向

QQ图片20160411230623.png


QQ图片20160411231019.jpg

加入场景的中的摇杆是这样的 摇杆样式图片可以自己更改

QQ图片20160411231146.png

然后我们在人物的Animatior组件中添加状态机 ,同时我们设置事件为float类型的参数

QQ图片20160411231246.jpg


QQ图片20160411231604.jpg


为我们的人物添加一个名为Player Move的脚本
注意脚本中的Speed参数是使融合树中的阈值

QQ图片20160412100125.png

[AppleScript] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {

Animator player;
float Speed=1.41f;
void Awake()
{
            //获取player人物的动画组件
    player = GameObject.Find("Player").GetComponent<Animator>();
}
void Start () {
            //EasyTouch 的订阅事件
    EasyJoystick.On_JoystickMove += Move;
            //EasyTouch 的订阅事件
    EasyJoystick.On_JoystickMoveEnd += MoveEnd;
}

void Move(MovingJoystick move)
{
            //动画控制器中的Speed值设为摇杆到圆心的Value值得百分比乘上动画融合树的阈值
    float speed = Vector2.Distance(move.joystickValue, Vector2.zero)*Sspeed;
    player.SetFloat("SpeedX", speed);
    player.transform.rotation = Quaternion.AngleAxis(move.Axis2Angle(), Vector3.up);
}

void MoveEnd(MovingJoystick move)
{
    float speed = Vector2.Distance(move.joystickValue, Vector2.zero)*Sspeed;
    player.SetFloat("SpeedX", speed);
}
}
注意状态机中的事件的参数 必须小于1 同时调试 使人物的动作变得流畅

QQ图片20160411232529.png


QQ图片20160411232545.png


+1
477°C
沙发哦 ^ ^ 马上
最近访问 头像模式 列表模式
因分享而快乐,学习以自强!

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 沪ICP备14023207号-9 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.2

1
QQ