Group Group Group Group Group Group Group Group Group

ZombieCogna no errors, won't run?

#1

(New to programming, self learning.). I have gotten to the point in which the zombie is suppose to move by touches on the screen but it is not. The FPS is changing from the amount I should be moving in my console… here is my movement code as shown directly the same from the book what is wrong???

override func update(_ currentTime: CFTimeInterval) {
if lastUpdateTime > 0 {
dt = currentTime - lastUpdateTime // dt defined
} else {
dt = 0 }
lastUpdateTime = currentTime
print("(dt*1000) milleseconds since last update")

    move(sprite: zombie, velocity: velocity)
    
}


func move(sprite: SKSpriteNode, velocity: CGPoint) {
    // step 1
    let amountToMove = CGPoint(x: velocity.x * CGFloat(dt),
                               y: velocity.y * CGFloat(dt))
    print("Amount to move: \(amountToMove)")
    // step 2
    sprite.position = CGPoint(x: sprite.position.x + amountToMove.x,
                              y: sprite.position.y + amountToMove.y)
}

func sceneTouched(touchLocation:CGPoint) {
    moveZombieToward(location: touchLocation)
}
override func touchesBegan(_ touches: Set<UITouch>,
                           with event: UIEvent?) {
    guard let touch = touches.first else {
        return
    }
    let touchLocation = touch.location(in: self)
    sceneTouched(touchLocation: touchLocation)
}
override func touchesMoved(_ touches: Set<UITouch>,
                           with event: UIEvent?) {
    guard let touch = touches.first else {
        return
    }
    let touchLocation = touch.location(in: self)
    sceneTouched(touchLocation: touchLocation)
} 

func moveZombieToward(location: CGPoint) {
    let offset = CGPoint(x: location.x - zombie.position.x,
                         y: location.y - zombie.position.y) //creates how much they differr
    let length = sqrt(
        Double(offset.x * offset.x + offset.y * offset.y)) //A^2 + b^2 = c^2, c = √a^2 + b^2 // draws mathmatically vector direction line

    
    let direction = CGPoint(x: offset.x / CGFloat(length),
                            y: offset.y / CGFloat(length))



    velocity = CGPoint(x: direction.x * zombieMovePointsPerSec,
                       y: direction.y * zombieMovePointsPerSec) //distance with a speed to make action.

    //12/14 does not work up to the point of "touches should work."
    
    
}

}

#2

Hi @jonahprogramma

I would suggest you to take a look at the velocity parameter of the ‘func move(sprite:…’, try to print it out to the console, maybe it is always 0 or near that.
Also make sure that ‘zombie’ variable is storing the actual zombie sprite and not something else.

Hope this is helpful

Nikita

closed #3

This topic was automatically closed after 166 days. New replies are no longer allowed.