1使用UGUI,同时搭建场景,
2写脚本时鼠标事件需要继承接口。
public class StrickScript : MonoBehaviour ,IBeginDragHandler,IDragHandler,IEndDragHandler
{
public void OnEndDrag (PointerEventData eventData)
{
transform.position = m_StartPos;
isDrag = false;
}
//获得Image初始位置,最后回归位置
Vector3 m_StartPos;
Vector3 m_PlayerDir;
public void OnDrag (PointerEventData eventData)
{
//得到Image的代表的按钮移动的方向。
Vector3 dir = Input.mousePosition - m_StartPos;
//注意是Input.mousPosition 的距离,
if (Vector3.Distance (m_StartPos, Input.mousePosition) < 20f) {
transform.position = Input.mousePosition;
} else {
//固定Image的移动范围。
transform.position = m_StartPos + dir.normalized * 20f;
}
isDrag = true;
m_PlayerDir = new Vector3 (dir.x, 0f, dir.y);
}
public GameObject m_Player;
Rigidbody m_rigi;
bool isDrag = false;
public void OnBeginDrag (PointerEventData eventData)
{
m_StartPos = transform.position;
}
void Awake ()
{
m_rigi = m_Player.GetComponent <Rigidbody> ();
}
void Update ()
{
//停止拖动后物体停止移动,设置一个bool值,
if (isDrag) {
//使用刚体的移动,
m_rigi.MovePosition (m_rigi.position + m_PlayerDir * Time.deltaTime * 0.1f);
}
}
}
效果图