在PC端模拟摇杆,实现控制摇杆让玩家或者物体移动。以下是完整代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NGUIMouse : MonoBehaviour
{
//设置关联摇杆
public UISprite controller;
//获取坦克的位置信息
public Transform tank;
//坦克的移动速度
public float moveSpeed = 5f;
//坦克方向旋转速度
public float roundSpeed = 20f;
//设置当前移动方向
private Vector3 moveDir;
//坦克是否移动
private bool isMoving;
//监听事件
private void Start()
{
UIEventListener listener = UIEventListener.Get(controller.gameObject);
//监听拖拽使图片移动
listener.onDrag = (obj, vector) =>
{
//不停的改变对象位置
controller.transform.localPosition += new Vector3(vector.x, vector.y, 0);
//判断极限位置
if (controller.transform.localPosition.magnitude > 140)
{
controller.transform.localPosition = controller.transform.localPosition.normalized * 140;
}
//拖曳时让玩家移动
Move(controller.transform.localPosition.normalized);
};
//监听拖曳结束,让图片回到原点
listener.onDragEnd = (obj) =>
{
controller.transform.localPosition = Vector3.zero;
//结束时让玩家停止移动
StopMoving();
};
}
private void Update()
{
if(isMoving)
{
//位移
this.transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);
//旋转
this.transform.rotation = Quaternion.Lerp(this.transform.rotation, Quaternion.LookRotation(moveDir), roundSpeed * Time.deltaTime);
}
}
//控制移动
public void Move(Vector3 dir)
{
moveDir.x = dir.x;
moveDir.z = dir.y;
isMoving = true;
}
//停止移动
public void StopMoving()
{
isMoving = false;
}
}
希望我的笔记对你有所帮助,下一篇将解密UGUI版摇杆的制作。如果对你有帮助就点赞收藏吧!