我目前正在统一开发一款老虎机游戏,我想要实现的是,一旦卷轴停止旋转,符号就会上下弹跳一点,然后才会完全停止。
在我的代码中,此方法当前处理卷轴的停止:
private void Update(){
if(stopInitiated) {
speed= 0;
}
}
目前只是将卷轴的速度直接设置为 0。如果
float speed
的值为负,则卷轴向上移动,如果该值为正,则卷轴向下移动。有没有办法操纵速度值,从而创建一个漂亮的小反弹效果?
我尝试使用 this 示例脚本来实现 EasingFunction,但我不太明白这些方法是如何工作的。
我尝试过:
private void Update(){
if(stopInitiated) {
speed = EasingFunction.EaseOutBounce(-0.10f, 0.00f, 0.50f);
}
}
然而,唯一发生的事情是,一旦开始停止,卷轴就开始永远向上旋转。我认为 Update() 方法每次执行时都会调用
float EasingOutBounce
,因此这可能是重置速度值的原因。你能给我一个关于如何正确实现这样的缓动函数的提示吗?
否则,我也很乐意接受像 lerp 这样的替代解决方案,只要它能带来反弹效果。
感谢您的帮助!
我相信最好的方法是简单地将变量更改回 false,这样 Update() 就不会重复调用 if 语句中的代码:
private void Update(){
if(stopInitiated) {
speed = EasingFunction.EaseOutBounce(-0.10f, 0.00f, 0.50f);
stopInitiated = false;
}
}
这样,它只被调用一次,创建反弹效果。