unity3d自带的虚拟摇杆显然没有EasyTouch好用
首先下载这个插件
http://pan.baidu.com/s/1hqJAbTa
下载完成后。导入到unity,可以看看里面的案例
找到这个可以自己看看效果
现在我们利用这个插件来做一个自己的虚拟摇杆
导入插件后。把EasyTouch导入到视图中,这里有C#和js两类。我选择C#
你会发现
右边的属性
一般默认就可以了
Enable EasyTouch:属性设置是否启用
接下来在项目中添加一个虚拟摇杆
Scene视图的左下角则多了一个摇杆
层次视图中也多了一个对象
来看看这个对象的一些主要属性
修改摇杆的名字。可以在代码中找到这个摇杆。
比如一个场景中有多个摇杆。可以通过摇杆判断是触发了那个
摇杆的位置设置。这个一看就知道。
摇杆的事件和贴图设置,
在场景中自己添加一个角色。给其添加脚本 MoveController.cs
using UnityEngine; using System.Collections; /// <summary> /// 用来接收遥感事件控制角色的移动 /// </summary> public class MoveController : MonoBehaviour { Animator animator; public float speed = 5;//移动速度 void Awake() { animator = GetComponent<Animator>(); } // Use this for initialization void Start() { } // Update is called once per frame void Update() { } /// <summary> /// 脚本启用时触发 ,注册事件 /// </summary> public void OnEnable() { EasyJoystick.On_JoystickMove += new EasyJoystick.JoystickMoveHandler(EasyJoystick_On_JoystickMove); EasyJoystick.On_JoystickMoveEnd += new EasyJoystick.JoystickMoveEndHandler(EasyJoystick_On_JoystickMoveEnd); } /// <summary> /// 移动摇杆结束 /// </summary> /// <param name="move"></param> void EasyJoystick_On_JoystickMoveEnd(MovingJoystick move) { //停止时,角色恢复idle //Movejoystick 当前移动的摇杆名称。 if (move.joystickName == "Movejoystick") { animator.SetBool("Run", false); } } /// <summary> /// 摇杆移动中 /// </summary> /// <param name="move"></param> void EasyJoystick_On_JoystickMove(MovingJoystick move) { if (move.joystickName != "Movejoystick") { return; } //获取摇杆中心偏移坐标 float joyPositionX = move.joystickAxis.x; float joyPositionY = move.joystickAxis.y; //开始移动 if (joyPositionX != 0 || joyPositionY != 0) { //设置角色的朝向 (朝向当前坐标+摇杆偏移量) //Vector3 targetPos = new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY) //or Vector3 targetPos = transform.position + new Vector3(joyPositionX, 0, joyPositionY) * Time.deltaTime * speed; transform.LookAt(targetPos); //玩家移动 //transform.Translate(Vector3.forward * targetPos); //利用刚体移动 rigidbody.MovePosition(targetPos); //播放奔跑动画 animator.SetBool("Run", true); } } /* Button Interaction&Events * 中勾选use specific method * Down method name:按下执行一次 * Press method name:按下一直执行 * Up method name:按下弹起执行一次 */ /// <summary> /// 按下执行该事件,只执行一次 /// Down method name /// </summary> void Attack() { //播放攻击动画 //animator.SetBool("Attack", true); } /// <summary> /// 按下一直触发该事件 /// Press method name /// </summary> void PressAttack() { animator.SetBool("Attack", true); } /// <summary> /// 触摸或者鼠标弹起 执行该事件 只执行一次 /// Up method name /// </summary> void StopAttack() { animator.SetBool("Attack", false); } }
然后再添加一个杀怪的按钮
此时右下角会显示
属性都很简单
可以参考:
http://blog.csdn.net/dingxiaowei2013/article/details/19967041
http://blog.csdn.net/qinyuanpei/article/details/26204177?utm_source=tuicool