C# 为什么Unity2D中的碰撞检查提供了各种结果?

C# 为什么Unity2D中的碰撞检查提供了各种结果?,c#,unity3d,collision,C#,Unity3d,Collision,我试图在Unity2D中重新创建AA以了解一切是如何工作的,我使用YouTube教程引导我完成它,我在视频中有确切的代码,但它似乎工作不正常,当触到旋转球时,销不会同时停止(见下图)。有些人会半途而废,而另一些人会过早停止 以下是pin码(pin.cs): 只需使用FixedUpdate()代替Update() 请参阅链接,处理刚体时应使用FixedUpdate()而不是Update() 因此,将代码更改为: public class Pin : MonoBehaviour { ...

我试图在Unity2D中重新创建AA以了解一切是如何工作的,我使用YouTube教程引导我完成它,我在视频中有确切的代码,但它似乎工作不正常,当触到旋转球时,销不会同时停止(见下图)。有些人会半途而废,而另一些人会过早停止

以下是pin码(pin.cs):

只需使用
FixedUpdate()
代替
Update()

请参阅链接,处理刚体时应使用
FixedUpdate()
而不是
Update()

因此,将代码更改为:

public class Pin : MonoBehaviour
{
    ...

    void FixedUpdate() 
    {
        if (moving)
            rb.MovePosition(rb.position + Vector2.up * speed * Time.deltaTime);
    }

    void OnTriggerEnter2D(Collider2D collider) 
    {
        ...
    }
}

我希望它能帮助您。

您的刚体设置为连续还是离散?@Draco18s我将其设置为离散,将身体类型设置为运动学将其更改为连续。@Draco18s它不起作用,如果您希望它是fps独立运动,应该是“*Time.fixedDelatime”。在FixedUpdate中使用Time.deltaTime作为一个因素是非常糟糕的
public class Pin : MonoBehaviour
{
    ...

    void FixedUpdate() 
    {
        if (moving)
            rb.MovePosition(rb.position + Vector2.up * speed * Time.deltaTime);
    }

    void OnTriggerEnter2D(Collider2D collider) 
    {
        ...
    }
}