经过几次尝试,平台未达到其原始位置,但随后被删除,我不知道如何解决。
public class FallingPlatform : MonoBehaviour
{
private Rigidbody2D rb;
// Use this for initialization
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.name.Equals("Ellen"))
{
Invoke("DropPlatform", 0.5f);
Destroy(gameObject, 2f);
InvokeRepeating("DropPlatform", 0.5F);
respawn(gameObject, 2f);
}
}
private void InvokeRepeating(string v1, float v2)
{
throw new NotImplementedException();
}
private void respawn(GameObject gameObject, float v)
{
throw new NotImplementedException();
}
private void DropPlatform()
{
rb.isKinematic = false;
}
答案 0 :(得分:0)
您正在尝试执行的操作缺少某些上下文。但是,我猜测您正在制作一个游戏,其中有一个玩家在不同的平台上跳跃,当他们碰到它们之后它们掉下来,然后您希望它们重新出现。注意事项: 1)您的respawn函数只是抛出一个异常(因此调用它毫无意义)。 2)一旦“销毁”功能运行,其他任何东西都将无法运行(这可能就是为什么它会在几次后停止工作的原因。
可能有更好的方法来实现您要执行的操作(例如,未将rb.isKinematic设置为false以启用重力)。但是为了在不过多更改代码的情况下回答您的问题,您可以尝试以下代码。它应该使平台在0.5秒后掉落,并使其回到1.5秒后的位置。如果这不是您想要的,请分享有关您要做什么的更多信息。
public class FallingPlatform : MonoBehaviour
{
private Rigidbody2D rb;
private Transform originalTransform;
// Use this for initialization
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.name.Equals("Ellen"))
{
Invoke("DropPlatform", 0.5f);
respawn(gameObject, 2f);
}
}
private void InvokeRepeating(string v1, float v2)
{
throw new NotImplementedException();
}
private void respawn(GameObject gameObject, float v)
{
gameobject.transform.position = originalTransform.position
rb.isKinematic = true;
}
private void DropPlatform()
{
originalTransform = gameobject.transform;
rb.isKinematic = false;
}