C# Can';t使用C在Unity 2D中使用另一个对象向玩家添加力#
我只是从Unity开始,我希望玩家能够制造一个小爆炸,在用C#引爆后发射它们。我已经让对象生成了,但是由于某种原因没有添加原力。我已经确定刚体是正确的,但是玩家在爆炸后仍然没有移动。代码如下:C# Can';t使用C在Unity 2D中使用另一个对象向玩家添加力#,c#,unity3d,C#,Unity3d,我只是从Unity开始,我希望玩家能够制造一个小爆炸,在用C#引爆后发射它们。我已经让对象生成了,但是由于某种原因没有添加原力。我已经确定刚体是正确的,但是玩家在爆炸后仍然没有移动。代码如下: using UnityEngine; public class plosionSelfScript : MonoBehaviour { // Start is called before the first frame update public GameObject player
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);
}
}
}
使用UnityEngine;
公共类plosionSelfScript:单行为{
//在第一帧更新之前调用Start
公共游戏对象玩家;
私人刚体2D播放器B;
私人等待;
void Start(){
playerRB=player.GetComponent();
Log(playerRB);
等待=0;
}
无效更新(){
等待=等待+1;
如果(等待>=20){
playerRB.AddForce(新矢量2(50005000));
摧毁(游戏对象);
}
}
}
提前感谢您的帮助。首先,我建议您对代码进行一些小的修改:
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 );
}
}
}
public类plosionSelfScript:monobhavior
{
公共游戏对象玩家;
private Rigidbody2D playerRB;//为什么不首先存储它?
公共浮动等待时间;
专用浮点定时器;
无效开始()
{
playerRB=player.GetComponent();
Log(playerRB);
定时器=0;
}
无效更新()
{
timer+=Time.deltaTime;
如果(计时器>=等待时间)
{
playerRB.AddForce(新矢量2(50005000));
Log(“添加强制并销毁对象”);
摧毁(游戏对象);
}
}
}
在以前的代码中,您等待值“20”。考虑到大多数设备大约每秒调用更新方法60次,您的爆炸将在创建后1/3秒发生。我认为那不是你想要的
尽管如此,我们仍然不清楚为什么不施加这种力。您还需要检查一些其他事项:
- 刚体2D是否标记为运动学
- 你的刚体是极度起伏,还是有其他力作用于它
- 您的播放器脚本是否以任何方式覆盖RigidBody2D物理