几行代码简单实现unity刚体的拖拽(一般不会穿墙)
拖拽物体的功能unity自带了拖拽的方法OnMouseDrag(),不用费劲心思写拖拽逻辑,直接在函数里写将鼠标的屏幕坐标转换为世界坐标,再将这个坐标赋值给物体的position就可以实现拖拽,但是拖拽刚体的时候会出现穿墙乱飞的现象(以下用的是2D刚体,3D刚体也同理),这是因为刚体的移动还会触发物理碰撞的机制,强制改变坐标会出现问题,好在unity里自带了让刚体以符合物理规律运动的方法MovePosition,除此之外,Rigidbody2D组件还附带了很多物理运动的方法,控制刚体运动最好用这些方法,这样可以最大限度避免出现各种违背物理规律的奇怪问题。
(以下附上2D刚体拖拽的代码)
private Rigidbody2D rigidbody2d;//2D物体的刚体组件private void Start(){rigidbody2d = transform.GetComponent();//获取2D刚体组件}//拖拽物体private void OnMouseDrag(){Vector2 cursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//获取鼠标的世界坐标if (Vector2.Distance(cursorPos, transform.position)<1)//控制拖拽距离,防止拖拽过快穿墙{rigidbody2d.MovePosition(cursorPos);//改变刚体坐标,符合物理规律}}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
