【问题标题】:increasing player's speed when entering booster and a speed upgrade system进入助推器时提高玩家的速度和速度升级系统
【发布时间】:2014-08-30 23:40:50
【问题描述】:

我正在使用我有限的知识、youtube 教程和谷歌上的故障排除在 Unity 中构建我的第一款游戏,尽管我对如何做到这一点有一些想法,但我似乎无法让它发挥作用。

对于较大的关卡之一,我需要加速来提高玩家在驾驶时的速度。这在很多赛车游戏中都可以看到,但为了澄清,我发现这个视频使用了这种类型的助推器https://www.youtube.com/watch?v=GQ1FLPBw1FE

我尝试过制作一个脚本来删除我当前的移动脚本并用更快的移动脚本替换它,我还尝试过制作一个脚本来检测与玩家(标签)的碰撞并对其施加力。两者都不起作用我也一直在考虑使用时间刻度,但我不希望世界其他地方或计分器等加速,只是玩家。

这是我用于 playermovement 的基本脚本。

#pragma strict

function Start () {
}
var forwardSpeed:float = 35;
var turnSpeed:float = 1;

function FixedUpdate () {
    var forwardMoveAmount=Input.GetAxis("Vertical")*forwardSpeed;

    var turnAmount=Input.GetAxis("Horizontal")*turnSpeed;

    transform.Rotate(0,turnAmount,0);

    rigidbody.AddRelativeForce(0,0,-forwardMoveAmount);

}

并且由于玩家的车辆是可定制的,我还想进行升级,以将玩家的基础移动速度永久提高一定数量。我会通过输入一个 if(upgrade is active) 来做到这一点 将其速度提高 x; 这必须与助推器叠加

如果你们对我可以如何做这些事情中的一个或两个有任何想法,请提前分享并非常感谢!

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    不要用更快的脚本替换移动脚本,而是为玩家的移动添加一个额外的变量。

    var forwardMoveAmount=Input.GetAxis("Vertical")*forwardSpeed * boostSpeed;
    

    其中 boostSpeed 通常等于 1,但是当玩家与速度提升发生碰撞时,将值推高到更高的值,例如 2,然后在不久之后它会重置为 1。至于玩家速度提升,遵循相同的逻辑, 永久除外,所以它看起来像这样:

    var forwardMoveAmount=Input.GetAxis("Vertical")*forwardSpeed * boostSpeed * upgradeSpeed;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多