Unity + C# 弹跳动画

问题描述 投票:0回答:1

我目前正在统一开发一款老虎机游戏,我想要实现的是,一旦卷轴停止旋转,符号就会上下弹跳一点,然后才会完全停止。

在我的代码中,此方法当前处理卷轴的停止:

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 这样的替代解决方案,只要它能带来反弹效果。

感谢您的帮助!

c# unity-game-engine animation game-development game-physics
1个回答
0
投票

我相信最好的方法是简单地将变量更改回 false,这样 Update() 就不会重复调用 if 语句中的代码:

private void Update(){
    if(stopInitiated) {
        speed =  EasingFunction.EaseOutBounce(-0.10f, 0.00f, 0.50f);
        stopInitiated = false;
    }
}

这样,它只被调用一次,创建反弹效果。

© www.soinside.com 2019 - 2024. All rights reserved.