无法使用 Unity 2D 中的 C# 向使用其他对象的玩家添加力



我刚从Unity开始,我希望玩家能够创建一个小爆炸,在用C#引爆后发射它们。我已经让物体产卵了,但由于某种原因,没有添加力。我已经确定刚体是正确的,但玩家在它引爆后仍然没有移动。这是代码:

using UnityEngine;
public class plosionSelfScript : MonoBehaviour {
// Start is called before the first frame update
public GameObject player;
private Rigidbody2D playerRB;
private int wait;
void Start() {
playerRB = player.GetComponent<Rigidbody2D>();
Debug.Log(playerRB);
wait = 0;
}
void Update() {
wait = wait + 1;
if (wait >= 20) {
playerRB.AddForce(new Vector2(5000, 5000));
Destroy(gameObject);
}
}
}

提前感谢您的帮助。

我可以首先建议您对代码进行一些小的修改吗:

public class plosionSelfScript : MonoBehaviour
{
public GameObject player;
private Rigidbody2D playerRB;   // Why not store this in the first place?
public float waitTime;
private float timer;
void Start ( )
{
playerRB = player.GetComponent<Rigidbody2D> ( );
Debug.Log ( playerRB );
timer = 0;
}
void Update ( )
{
timer += Time.deltaTime;
if ( timer >= waitTime )
{
playerRB.AddForce ( new Vector2 ( 5000, 5000 ) );
Debug.Log ( "Added force and destroying object." );
Destroy ( gameObject );
}
}
}

在以前的代码中,您等待值"20"。考虑到大多数设备每秒调用Update方法大约60次,您的爆炸将在创建后1/3秒发生。我不认为这是你想要的。

尽管如此,目前还不清楚为什么没有施加这种力。你还需要检查一些额外的东西:

  • 您的RigidBody2D是否标记为运动学
  • 你的RigidBody2D是极度起伏,还是有其他力作用在它身上
  • 你的玩家脚本是否以任何方式覆盖了RigidBody2D物理

最新更新