gpt4 book ai didi

ios - 使用自定义 SKAction 的 EaseOut Action

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:50 33 4
gpt4 key购买 nike

我有以下自定义 SKAction 工作,但作为 EaseIn 而不是 EaseOut。我想让它缓和!我使用在网络上找到的各种缓动方程来更正它,但不幸的是失败了。

    let duration = 2.0
let initialX = cameraNode.position.x
let customEaseOut = SKAction.customActionWithDuration(duration, actionBlock: {node, elapsedTime in

let t = Double(elapsedTime)/duration
let b = Double(initialX)
let c = Double(targetPoint.x)
let p = t*t*t*t*t

let l = b*(1-p) + c*p

node.position.x = CGFloat(l)
})

cameraNode.runAction(customEaseOut)

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

你不需要计算它。

SKAction 只有一个名为 timingMode 的属性:

// fall is an SKAction
fall.timingMode = .easeInEaseOut

您可以选择:

  • 线性(默认)
  • 缓入
  • 缓和
  • 缓入缓出

查看来自 API docs 的详细信息还有here .

如果您需要更改 Apple 预设,您可以使用:timingFunction

fall.timingFunction = { time -> Float in
return time
}

根据源码构建自定义函数:

/**
A custom timing function for SKActions. Input time will be linear 0.0-1.0
over the duration of the action. Return values must be 0.0-1.0 and increasing
and the function must return 1.0 when the input time reaches 1.0.
*/
public typealias SKActionTimingFunction = (Float) -> Float

所以有了这些信息你可以写:

func CubicEaseOut(_ t:Float)->Float
{
let f:Float = (t - 1);
return f * f * f + 1;
}
fall.timingFunction = CubicEaseOut

关于ios - 使用自定义 SKAction 的 EaseOut Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40043177/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com