如何随着时间的推移或当分数更新时增加重力?

时间:2019-06-12 18:16:04

标签: swift xcode sprite-kit

我有一个从屏幕顶部掉下的对象。我可以让它正常工作,但是到目前为止,我希望对象随着时间的推移或分数的增加而开始缓慢下降,然后逐渐增大而下降。哪一个是最简单的。

这是我关于物体重力的代码

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
numeric_cols = model_data_df._get_numeric_data().columns
for col in list(set(model_data_df.columns) - set(numeric_cols)):
        model_data_df[col] = le.fit_transform(model_data_df[col].astype(str))

这是我的分数更新标签代码。

private func setupPhysics() {
    physicsWorld.gravity = CGVector(dx: 0.0, dy: -5.8)
    physicsWorld.contactDelegate = self

现在,该物体的下降幅度为-5.8,这很好,可能会使启动速度变慢,但我想让它逐渐增加其下降幅度。

1 个答案:

答案 0 :(得分:0)

为观察者添加引力属性,以使世界每次改变时都改变引力:

var gravity = CGVector(dx: 0.0, dy: -5.8) {
                 didSet {
                         physicsWorld.gravity = gravity
                        }
                 }
var gravityScaleFactor : CGFloat = 0.9     // Gravity changes this much when score is updated

将设置更改为:

private func setupPhysics() {
    physicsWorld.gravity = gravity
    physicsWorld.contactDelegate = self

(您可能不需要在此处设置PhysicWorld的重力,因为初始化重力时,观察者会为重力属性设置它)。

更改分数时调整重力:

private func updateScoreLabel() {
    scoreLabel.text = String(score) 
    gravity.dx *= gravityScaleFactor

由于重力比例因子是变量,您可以根据难度级别,加电等进行更改,并且当我们通过重力属性的属性观察器更改世界的重力时,我们可以在任意位置更改该属性,并且知道世界的引力也会随之改变。