繁体   English   中英

如何更改游戏中不断生成的对象的速度?

[英]How can I change the speed of objects that are spawning in constantly in my game?

我正在为 class 编辑一个太空射击游戏,我正在尝试创建一个“困难模式”,当玩家按下“e”键时,它会加速小行星。 目前使用我的代码,按下该键将加速当前屏幕上的每颗小行星,但新生成的小行星以正常速度运行。 我不知道如何解决,并希望得到一些建议。 这是我的代码:

 public float speed;

 private Rigidbody rb;

 Vector3 initialForwardVector;

 void Start()
 {
    rb = GetComponent<Rigidbody>();
    initialForwardVector = transform.forward;
    rb.velocity = initialForwardVector * speed;
 }

 void Update()
 {
    if (Input.GetKey (KeyCode.E))
    {
        rb.velocity = initialForwardVector * (2*speed);
    }
 }

最快最简单的解决方案:

public float speed;
public static float speedModifier = 1f;

private Rigidbody rb;

Vector3 initialForwardVector;

void Start()
{
    rb = GetComponent<Rigidbody>();
    initialForwardVector = transform.forward;
    rb.velocity = initialForwardVector * speed * speedModifier;
}

void Update()
{
    if (Input.GetKey(KeyCode.E))
    {
        speedModifier = 2f;
        rb.velocity = initialForwardVector * (speedModifier * speed);
    }
}

速度修改器将应用于所有新射弹,因为该值在 class 的所有实例之间共享(静态)。 为了更强大的实现,我建议添加一个 Initialize function ,它将为新的小行星设置一个本地速度修改器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM