微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2D 物理拖放 Unity

如何解决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 举报,一经查实,本站将立刻删除。