本文主要是介绍几行代码简单实现unity刚体的拖拽(一般不会穿墙),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拖拽物体的功能unity自带了拖拽的方法OnMouseDrag(),不用费劲心思写拖拽逻辑,直接在函数里写将鼠标的屏幕坐标转换为世界坐标,再将这个坐标赋值给物体的position就可以实现拖拽,但是拖拽刚体的时候会出现穿墙乱飞的现象(以下用的是2D刚体,3D刚体也同理),这是因为刚体的移动还会触发物理碰撞的机制,强制改变坐标会出现问题,好在unity里自带了让刚体以符合物理规律运动的方法MovePosition,除此之外,Rigidbody2D组件还附带了很多物理运动的方法,控制刚体运动最好用这些方法,这样可以最大限度避免出现各种违背物理规律的奇怪问题。
(以下附上2D刚体拖拽的代码)
private Rigidbody2D rigidbody2d;//2D物体的刚体组件private void Start(){rigidbody2d = transform.GetComponent<Rigidbody2D>();//获取2D刚体组件}//拖拽物体private void OnMouseDrag(){Vector2 cursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//获取鼠标的世界坐标if (Vector2.Distance(cursorPos, transform.position)<1)//控制拖拽距离,防止拖拽过快穿墙{rigidbody2d.MovePosition(cursorPos);//改变刚体坐标,符合物理规律}}
这篇关于几行代码简单实现unity刚体的拖拽(一般不会穿墙)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!