在 C# 中收集 X 项时的 SpeedBoost

SpeedBoost when you collect X items in c#

我想编写代码,当我的玩家收集到 5 件物品时(因此当 paintCount = 5 时),玩家会在短时间内获得速度提升并且计数器返回零。但我什至不知道如何让我的播放器运行得更快。当我想将速度变量乘以 2 时它会出错。欢迎任何帮助(在 c# 中)。

速度变量在我的球员运动的主脚本中。

错误: "Only assignment, call, increment, decrement, await and new object expressions can be used as a statement."

using UnityEngine;
using System.Collections;

public class Paintser : PowerUp
{

  public static int paintCount = 0; 

  public void SpeedUp()
  {
    if (paintCount == 5)
    {
      SimplePlayer0.speed * 2;

    }
  }
}

其他class:

using UnityEngine;
using System.Collections;

public class PowerUp : MonoBehaviour
{

  void OnTriggerEnter2D(Collider2D other)
  {
    if (other.tag == "Player")
    {
      Destroy(this.gameObject);
      Paintser.paintCount++;
    }
  }
}

执行 SimplePlayer0.speed *= 2 以解决您的编译错误。

在您的代码中,您只是将 SimplePlayer0.speed 乘以 2,但没有将其分配给任何东西。您输入的内容被简单地解释为:获取 SimplyPlayer0.speed 的值并将其乘以二。它不会将 计算结果 保存为 SimplyPlayer0.speed.

的新值
SimplePlayer0.speed * 2;

这不是一个有效的赋值,它只是一个乘法,不能独立存在。你需要使用

SimplePlayer0.speed = SimplePlayer0.speed * 2;

或者

SimplePlayer0.speed *= 2;

这两个等价的意思是:将SimplePlayer0.speed乘以2并将结果赋值给SimplePlayer0.speed