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