如何解决2D 物理拖放 Unity
我写了这样一个脚本。它似乎或多或少地起作用。但是,我们应该说,对象在光标上方下垂很多。当我拿起它时,我需要对象直接被光标捕获。在 People Playground 游戏中可以看到我需要的一个很好的例子。但是你可以抓住角落,我也尝试过,但没有成功,所以我决定离开它以便我可以抓住质心,但是有一个我描述的问题多于。请帮忙,求求你了
公共类拖动器:MonoBehavIoUr { Rigidbody2D rb;
public float thrust;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void OnMouseDrag()
{
rb.veLocity = new Vector3(0,0);
Vector2 direction = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
rb.AddForce(direction * thrust,ForceMode2D.Force);
}
private void onmouseup()
{
}
}
解决方法
如果我理解正确,您想实际拖动对象而不是施加力,对吗?
你可能会这样做
private bool dragging;
private Vector2 targetPosition;
// This part is optional for allowing to "throw" the object when releasing the mouse
private Vector2 currentVelocity;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void OnMouseDown()
{
dragging = true;
}
private void OnMouseUp()
{
dragging = false;
rb.velocity = currentVelocity;
}
private void OnMouseDrag()
{
targetPosition = Camera.main.ScreenToWorldPos(Input.mousePosition);
}
private void FixedUpdate ()
{
if(dragging)
{
currentVelocity = targetPosition - rb.position;
rb.MovePosition(targetPosition);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。