我有一款游戏,玩家需要加时加速并发射子弹。我希望子弹相对于玩家保持相同的速度。所以我必须在玩家脚本中引用速度变量。
我在这里发现了一个类似的情况,
如何在Unity的预制脚本中引用GameObject's位置
但是在这里他们想要得到一个组件而我想要得到一个变量
那么如何在预制中引用另一个脚本中的变量呢?
On bullet prefab i have try
public PlayerScript playerReference;然后playerReference.speed;这就是我通常如何获得引用,但我不能在unity编辑器中分配PlayerScript,因为子弹头是预制的。
你将需要在每个项目中以这样或那样的方式引用玩家。下面是一种方法:
- 当你创建子弹头时,获取子弹头脚本并将Player分配给它在你的PlayerScript中:
void Shoot()
{
var bullet = Instantiate(bulletPrefab, bla, bla, bla);
var bulletScript = bullet.GetComponent<YourBulletScript>();
bulletScript.PlayerScript = this;
}
然后在YourBulletScript
代码中你会得到这样的速度:
speed = speed + Player.speed;
Psuedocode因为你没有提供你自己的代码,如果你想要它更详细,你需要在你的问题更详细:)
首先,你需要引用玩家GameObject。例如,您可以这样做:首先用任意标记标记播放器(在下面的情况下,标记是" player "),然后将以下代码放入项目符号的脚本中:
player = GameObject.FindWithTag("Player");
从那里,您可以通过在项目符号脚本中使用以下代码来引用特定变量,以便利用速度:
bulletSpeed = player.GetComponent<PlayerScript>().speed
祝你好运,希望这能奏效!