Last active
November 27, 2020 08:12
-
-
Save retrokid/66a9a0ad7bbeff7ea2ba33b755d81494 to your computer and use it in GitHub Desktop.
2d character movement in spritekit 3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // GameScene.swift | |
| // cros | |
| // | |
| // Created by efe ertugrul on 19/06/2017. | |
| // Copyright © 2017 efe ertugrul. All rights reserved. | |
| // | |
| import SpriteKit | |
| import GameplayKit | |
| class GameScene: SKScene | |
| { | |
| // MARK:- PROPERTIES | |
| var sagYuru : Bool = false | |
| var solYuru : Bool = false | |
| var asagiYuru : Bool = false | |
| var yukariYuru : Bool = false | |
| var followCamera : SKCameraNode = SKCameraNode() | |
| var sprite : SKSpriteNode = SKSpriteNode.init() | |
| var asagiYuruAnimate : SKAction = SKAction() | |
| var sagaYuruAnimate : SKAction = SKAction() | |
| var solaYuruAnimate : SKAction = SKAction() | |
| var yukariYuruAnimate : SKAction = SKAction() | |
| let stopLeftTexture : SKTexture = SKTexture.init(imageNamed: "sag_yuru_0001") | |
| let stopRightTexture : SKTexture = SKTexture.init(imageNamed: "sol_yuru_0001") | |
| let stopBottomTexture : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0001") | |
| let stopTopTexture : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0001") | |
| // MARK:- LOAD | |
| override func didMove(to view: SKView) | |
| { | |
| followCamera = childNode(withName: "camera") as! SKCameraNode | |
| self.camera = followCamera | |
| let sagYuruF0001 : SKTexture = SKTexture.init(imageNamed: "sag_yuru_0001") | |
| let sagYuruF0002 : SKTexture = SKTexture.init(imageNamed: "sag_yuru_0002") | |
| let sagYuruF0003 : SKTexture = SKTexture.init(imageNamed: "sag_yuru_0003") | |
| let sagYuruF0004 : SKTexture = SKTexture.init(imageNamed: "sag_yuru_0004") | |
| let solYuruF0001 : SKTexture = SKTexture.init(imageNamed: "sol_yuru_0001") | |
| let solYuruF0002 : SKTexture = SKTexture.init(imageNamed: "sol_yuru_0002") | |
| let solYuruF0003 : SKTexture = SKTexture.init(imageNamed: "sol_yuru_0003") | |
| let solYuruF0004 : SKTexture = SKTexture.init(imageNamed: "sol_yuru_0004") | |
| let asagiYuruF0001 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0001") | |
| let asagiYuruF0002 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0002") | |
| let asagiYuruF0003 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0003") | |
| let asagiYuruF0004 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0004") | |
| let asagiYuruF0005 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0005") | |
| let asagiYuruF0006 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0006") | |
| let asagiYuruF0007 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0007") | |
| let asagiYuruF0008 : SKTexture = SKTexture.init(imageNamed: "asagi_yuru_0008") | |
| let yukariYuruF0001 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0001") | |
| let yukariYuruF0002 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0002") | |
| let yukariYuruF0003 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0003") | |
| let yukariYuruF0004 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0004") | |
| let yukariYuruF0005 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0005") | |
| let yukariYuruF0006 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0006") | |
| let yukariYuruF0007 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0007") | |
| let yukariYuruF0008 : SKTexture = SKTexture.init(imageNamed: "yukari_yuru_0008") | |
| yukariYuruF0001.filteringMode = .nearest | |
| yukariYuruF0002.filteringMode = .nearest | |
| yukariYuruF0003.filteringMode = .nearest | |
| yukariYuruF0004.filteringMode = .nearest | |
| yukariYuruF0005.filteringMode = .nearest | |
| yukariYuruF0006.filteringMode = .nearest | |
| yukariYuruF0007.filteringMode = .nearest | |
| yukariYuruF0008.filteringMode = .nearest | |
| asagiYuruF0001.filteringMode = .nearest | |
| asagiYuruF0002.filteringMode = .nearest | |
| asagiYuruF0003.filteringMode = .nearest | |
| asagiYuruF0004.filteringMode = .nearest | |
| asagiYuruF0005.filteringMode = .nearest | |
| asagiYuruF0006.filteringMode = .nearest | |
| asagiYuruF0007.filteringMode = .nearest | |
| asagiYuruF0008.filteringMode = .nearest | |
| sagYuruF0001.filteringMode = .nearest | |
| sagYuruF0002.filteringMode = .nearest | |
| sagYuruF0003.filteringMode = .nearest | |
| sagYuruF0004.filteringMode = .nearest | |
| solYuruF0001.filteringMode = .nearest | |
| solYuruF0002.filteringMode = .nearest | |
| solYuruF0003.filteringMode = .nearest | |
| solYuruF0004.filteringMode = .nearest | |
| let sagYuruFramesArray = [sagYuruF0001, sagYuruF0002, sagYuruF0003, sagYuruF0004] | |
| let solYuruFramesArray = [solYuruF0001, solYuruF0002, solYuruF0003, solYuruF0004] | |
| let asagiYuruFramesArray = [asagiYuruF0001, asagiYuruF0002, asagiYuruF0003, asagiYuruF0004, asagiYuruF0005, asagiYuruF0006, asagiYuruF0007, asagiYuruF0008] | |
| let yukariYuruFramesArray = [yukariYuruF0001, yukariYuruF0002, yukariYuruF0003, yukariYuruF0004, yukariYuruF0005, yukariYuruF0006, yukariYuruF0007, yukariYuruF0008] | |
| sprite = SKSpriteNode.init(texture: sagYuruFramesArray[0]) | |
| sprite.position = CGPoint(x: self.frame.midX, y: self.frame.midY) | |
| self.addChild(sprite) | |
| sagaYuruAnimate = SKAction.animate(with: sagYuruFramesArray, timePerFrame: 0.15) | |
| solaYuruAnimate = SKAction.animate(with: solYuruFramesArray, timePerFrame: 0.15) | |
| asagiYuruAnimate = SKAction.animate(with: asagiYuruFramesArray, timePerFrame: 0.15) | |
| yukariYuruAnimate = SKAction.animate(with: yukariYuruFramesArray, timePerFrame: 0.15) | |
| sprite.setScale(4) | |
| } | |
| // MARK:- CONTROLLER | |
| override func keyUp(with event: NSEvent) | |
| { | |
| switch event.keyCode | |
| { | |
| case 2: | |
| sprite.removeAllActions() | |
| sprite.texture = stopLeftTexture | |
| self.sagYuru = false | |
| case 0 : | |
| sprite.removeAllActions() | |
| sprite.texture = stopRightTexture | |
| solYuru = false | |
| case 1 : | |
| sprite.removeAllActions() | |
| sprite.texture = stopBottomTexture | |
| asagiYuru = false | |
| case 13 : | |
| sprite.removeAllActions() | |
| sprite.texture = stopTopTexture | |
| yukariYuru = false | |
| default:break | |
| } | |
| } | |
| override func keyDown(with event: NSEvent) | |
| { | |
| // w = 13 | |
| // a = 0 | |
| // s = 1 | |
| // d = 2 | |
| /* | |
| 124sag | |
| 123sol | |
| 126yukarı | |
| 125asagi | |
| */ | |
| if !sprite.hasActions() | |
| { | |
| switch event.keyCode | |
| { | |
| case 2: | |
| sprite.run(SKAction.repeatForever(sagaYuruAnimate)) | |
| self.sagYuru = true | |
| case 0 : | |
| sprite.run(SKAction.repeatForever(solaYuruAnimate)) | |
| solYuru = true | |
| case 1 : | |
| sprite.run(SKAction.repeatForever(asagiYuruAnimate)) | |
| asagiYuru = true | |
| case 13 : | |
| sprite.run(SKAction.repeatForever(yukariYuruAnimate)) | |
| yukariYuru = true | |
| default : break | |
| } | |
| } | |
| print(event.keyCode) | |
| } | |
| // MARK:- UPDATE | |
| override func update(_ currentTime: TimeInterval) | |
| { | |
| followCamera.position = sprite.position | |
| if sagYuru | |
| { | |
| sprite.position = CGPoint(x: sprite.position.x + 4, y: sprite.position.y) | |
| } | |
| else if solYuru | |
| { | |
| sprite.position = CGPoint(x: sprite.position.x - 4, y: sprite.position.y) | |
| } | |
| else if asagiYuru | |
| { | |
| sprite.position = CGPoint(x: sprite.position.x, y: sprite.position.y - 4) | |
| } | |
| else if yukariYuru | |
| { | |
| sprite.position = CGPoint(x: sprite.position.x, y: sprite.position.y + 4) | |
| } | |
| } | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment