我正在设计一个统一的打字游戏,玩家在田径100米冲刺中,打字越快,角色跑得越快。
我只是想知道我是否应该想要在输入的每个正确字母之间完成动画,或者根据字母是否正确来制定加速,减慢和暂停动画的算法。
以前有没有人有这样的经历? 另外,对于统一来说,我只是使用Ethan的标准资产作为我的模型,这是正确的做法吗?
答案 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;
}