首页 > 代码库 > Unity3d 双摇杆 easyTouch

Unity3d 双摇杆 easyTouch

 

首先创建一个摇杆的实例

技术分享

我这里修改名称为Move  

技术分享

 

 

复制一下  命名为 Rotate

技术分享

勾选动态显示,这样用户点击后才会显示摇杆(现在摇杆游戏都是动态显示)

技术分享

 

 

 

 

 

 

 

设置摇杆的位置(一个在左下,一个在 右下)

技术分享

 

 

 

 

 

 

 

 

 

 

 

 

点击后如图 在屏幕的左下方点击

技术分享

 

 

 

 

 

 

 

 

 

 

 

角色的移动直接用摇杆来控制玩家的(x ,z) 别忘了设置速度,这样运行下去,玩家就能随着摇杆进行移动

技术分享

 

 

***********************************************************************

技术分享

旋转我们用代码来控制

首选设置摇杆类型

技术分享

 

 

 

 

 

 

 

 

新建一个 空物体  TOUCH 绑定 控制脚本(我这里直接拿写好的粘上来了 ,大家无视其他的变量就行了)

技术分享

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[csharp] view plain copy
 
print?
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4.   
  5. public class MoveController : MonoBehaviour {  
  6.   
  7.     private Animator anim;  
  8.     private Rigidbody rb;  
  9.     private float joyPositionX;  
  10.     private float joyPositionY;  
  11.     private float joyroX;  
  12.     private float joyroY;  
  13.     public float Speed = 5f;  
  14.     private PlayerHealth ph;  
  15.     private EasyTouch ej;  
  16.        
  17.     private float timer;  
  18.   
  19.   
  20.   
  21.     void Awake()   
  22.     {  
  23.         anim = GameObject.FindGameObjectWithTag(Tags.player).GetComponent<Animator>();  
  24.         rb = anim.transform.rigidbody;  
  25.         ph = rb.transform.GetComponent<PlayerHealth>();  
  26.   
  27.     }  
  28. //首先注册摇杆的移动与停止事件  
  29.     void OnEnable()  
  30.     {  
  31.         EasyJoystick.On_JoystickMove += OnJoystickMove;  
  32.         EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;  
  33.         ej = gameObject.GetComponent<EasyTouch>();  
  34.     }  
  35.   
  36.   
  37.     //移动摇杆结束回掉  
  38.     void OnJoystickMoveEnd(MovingJoystick move)  
  39.     {  
  40.         if (move.joystickName == "Move")  
  41.         {  
  42.             anim.SetBool("Move", false);  
  43.             joyPositionX = 0;  
  44.             joyPositionY = 0;  
  45.         }  
  46.     }  
  47.     void Update()  
  48.     {  
  49.         if (ph.hp < 1 && ej.enable)  
  50.         {  
  51.               
  52.             ej.enable = false;    
  53.         }    
  54.     }  
技术分享
 
[csharp] view plain copy
 
print?
  1. //摇杆移动中的回掉  
  2.     void OnJoystickMove(MovingJoystick move)  
  3.     {  
  4.   
  5.           
  6.         Debug.Log("error");  
技术分享
  
[csharp] view plain copy
 
print?
  1. //下面就是判断摇杆名称来做相应的处理 玩家的坐标加上摇杆的偏移重新设置玩家的方向  
  2.         if (move.joystickName == "Rotate")  
  3.         {  
  4.             joyroX = move.joystickAxis.x;  
  5.             joyroY = move.joystickAxis.y;  
  6.             rb.transform.LookAt(new Vector3(rb.transform.position.x + joyroX, rb.transform.position.y, rb.transform.position.z + joyroY));  
  7.         }  
  8.         else if (move.joystickName == "Move")  
  9.         {  
  10.               
  11.             anim.SetBool("Move", true);  
  12.             joyPositionX = move.joystickAxis.x;  
  13.             joyPositionY = move.joystickAxis.y;  
  14.             /*    设置角色的朝向(朝向当前坐标+摇杆偏移量) 
  15.                 transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY)); 
  16.                  //移动玩家的位置(按朝向位置移动) 
  17.                  transform.Translate(Vector3.forward * Time.deltaTime * 5); 
  18.                  播放奔跑动画 
  19.             rb.MovePosition(transform.position + new Vector3(joyPositionX, 0, joyPositionY) * 50 * Time.deltaTime);*/  
  20.         }  
  21.     }  
  22. }  

 

 

 

 

好了  这样就能控制 旋转了 ,到此结束,很简单吧!

技术分享

Unity3d 双摇杆 easyTouch