Unity类型赛车

时间:2017-05-22 02:32:40

标签: unity3d unityscript

我正在设计一个统一的打字游戏,玩家在田径100米冲刺中,打字越快,角色跑得越快。

我只是想知道我是否应该想要在输入的每个正确字母之间完成动画,或者根据字母是否正确来制定加速,减慢和暂停动画的算法。

以前有没有人有这样的经历? 另外,对于统一来说,我只是使用Ethan的标准资产作为我的模型,这是正确的做法吗?

1 个答案:

答案 0 :(得分:0)

原创思想

你可以拥有它,以便每个正确的角色类型加速角色的动画,并逐渐减少每毫秒通过的速度(如果你没有打字则减慢速度)。然后,当用户输入错误的字符时,动画变得越来越慢(每次(?)的前一次的1/10)。

解决方案

在Unity中,处理时间安排有点困难,我的班级和我今年有问题。我们发现的最佳解决方案是在FixedUpdate循环本身内工作,因为它的运行时间比Update更简洁。

实施例

对于我的解决方案(以及我们最终做的事情)是更新FixedUpdate中的时间并在Update中使用

void FixedUpdate() {
    if (timer >= 12f) stopped = true;
    if (!stopped) timerDT = updateTimer(Time.deltaTime);
}

如果计时器变量大于12(秒),则停止运动。  如果没有停止,继续更新并添加到计时器,并将帧时间返回到timerDT

void Update() {
    this.transform.translate(velocity * timerDT);
}

这将根据FixedUpdate

中给出的速度和时间范围运行并更新附加的游戏对象

对于你,我会让脚本将动画控制器保存为脚本中的一个变量:

Controller animation = {animation controller};

注意:不记得需要去的地方,但我很确定它是控制器

然后您可以像这样更改动画:

void Update() {
    update_animation(timerDT, anim_speed);
}

void FixedUpdate() {
    timerDT = updateTimer(Time.deltaTime);
    if (timerDT - oldDT > 0.1) {
        oldDT = timerDT;
        anim_speed = anim_speed / 0.1; // for decreasing speed
    }
}

void update_animation(float deltatime, float speed) {
    animation["run"].speed = anim_speed;
}