我正在尝试在Unity2D中重新创建AA,以了解一切工作原理,我正在使用YouTube教程来指导我进行操作,并且视频中有确切的代码,但似乎不起作用正确地,当销子碰到旋转的球时,销子不会同时停止(如下所示)。有些会进入球的一半,而有些会过早停止。
这是密码(Pin.cs):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Pin : MonoBehaviour {
private bool moving = true;
public float speed = 20f;
public Rigidbody2D rb;
void Update() {
if (moving)
rb.MovePosition(rb.position + Vector2.up * speed * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D collider) {
if (collider.tag == "Rotator") {
moving = false;
transform.SetParent(collider.transform);
}
}
}
答案 0 :(得分:1)
只需使用FixedUpdate()
代替Update()
。
请参阅Unity Documentation - FixedUpdate链接,在处理刚体时应使用FixedUpdate()
代替Update()
。
因此,将您的代码更改为此:
public class Pin : MonoBehaviour
{
...
void FixedUpdate()
{
if (moving)
rb.MovePosition(rb.position + Vector2.up * speed * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D collider)
{
...
}
}
希望对您有帮助。