Unity自学虚拟摇杆
一.創建虛擬搖桿對象
1.虛擬搖桿區域:在Canvas下創建Image對象:VirtualControllerArea
(1)Color:R=0,G=0,B=0,A=75
(2)RectTransform:Pos X=-500,Pos Y=-200,Width=200,Height=200
2.虛擬搖桿控件:在VirtualControllerArea下創建Image對象VirtualController
(1)Color:R=0,G=0,B=0,A=75
(2)RectTransform:Pos X=-0,Pos Y=-0,Width=75,Height=75
二.新建虛擬搖桿組件VirtualController
1.給VirtualController對象添加VirtualController添加虛擬搖桿組件
2.組件代碼詳解:
using UnityEngine;
using UnityEngine.EventSystems;
public class VirtualController : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
Vector3 _startPosition;
public float _minXPos;
public float _minYPos;
public float _maxXPos;
public float _maxYPos;
void Start()
{
}
#region 在開始拖拽transform對象時,獲取transorm的初始位置
public void OnBeginDrag(PointerEventData data)
{
_startPosition = transform.position;
}
#endregion
#region 在拖拽transform對象時,設置transorm的位置為拖拽后的位置并限制transform的位置
public void OnDrag(PointerEventData data)
{
transform.position = data.position;
transform.localPosition = new Vector3 (Mathf.Clamp (transform.localPosition.x, _minXPos, _maxXPos), Mathf.Clamp (transform.localPosition.y, _minYPos, _maxYPos), 0);
}
#endregion
#region 在結束拖拽transform對象時,重置transorm到初始位置
public void OnEndDrag(PointerEventData data)
{
transform.position = _startPosition;
}
#endregion
}
三.虛擬搖桿使用案例
1.新建玩家移動組件PlayerMove
2.創建立方體并重置Transform
3.給立方體綁定PlayerMove組件
4.組件代碼詳解:
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
VirtualController _playControl;
void Start ()
{
_playControl = GameObject.Find ("VirtualController").GetComponent<VirtualController> ();
}
void Update ()
{
#region 根據虛擬搖桿的水平方向來模擬Input.GetAxis("Horizontal")旋轉玩家
if (_playControl.transform.localPosition.x > 0) {
transform.Rotate (0, 20 * Time.deltaTime, 0);
}
if (_playControl.transform.localPosition.x < 0) {
transform.Rotate (0, -20 * Time.deltaTime, 0);
}
#endregion
#region 根據虛擬搖桿的垂直方向來模擬Input.GetAxis("Vertical")移動玩家
if (_playControl.transform.localPosition.y > 0) {
transform.Translate (transform.forward * 10 * Time.deltaTime);
}
if (_playControl.transform.localPosition.y < 0) {
transform.Translate (transform.forward * -10 * Time.deltaTime);
}
#endregion
}
}
總結
以上是生活随笔為你收集整理的Unity自学虚拟摇杆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebStorm和VSCode配置
- 下一篇: webstorm设置中文界面