내 코드에 문제가 있습니다. 그들은 단지로 이동합니다,이 코드를 실행하면SKSpriteNode를 다른 SKSpriteNode로 만드는 법
이class GameScene: SKScene, SKPhysicsContactDelegate {
func Enemies() {
Enemy = SKSpriteNode(imageNamed: "Spaceship")
Enemy.size = CGSize(width: 50, height: 50)
Enemy.color = UIColor(red: 0.9, green: 0.1, blue: 0.1, alpha: 1.0)
Enemy.colorBlendFactor = 1.0
//physics
Enemy.physicsBody = SKPhysicsBody(rectangleOf: Enemy.size)
Enemy.physicsBody?.isDynamic = true
Enemy.physicsBody?.affectedByGravity = false
Enemy.name = "Enemy"
Enemy.position.y = -frame.size.height/2
let positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
addChild(Enemy)
}
override func didMove(to view: SKView) {
enemyTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(GameScene.Enemies), userInfo: nil, repeats: true)
override func update(_ currentTime: TimeInterval) {
Enemy.run(SKAction.move(to: ship.position, duration: 3))
}
, 나는 좀비를 생성 할 수 있지만 내 주요 선수를 따라하지 않을 것이다 : 나는 좀비가 다음 코드를 사용하여 주위에 내 플레이어를 따라하기 위해 노력하고있어 (즉, 시간 = 0에서 생성 된 좀비는 시간 = 0에서 배 위치로 갈 것이고, 시간 = 1에서 생성되는 좀비는 시간 = 1에서 배 위치로 갈 것입니다. 그러나이 코드를 실행하면 다음과 같이 좀비가 생성됩니다.
override func didMove(to view: SKView) {
Enemies()
}
고독한 좀비가 내 플레이어를 따라갑니다. 왜 코드가 한 좀비에 대해서만 작동하지만, 여러 좀비에는 사용할 수 없습니까?
여기 많은 문제가 있습니다. 타이머를 사용하면 안됩니다. 게임 루프와 쌍을 이루지 않습니다. 둘째로, [target and seeker behavior]를 구현하기 위해 초당 60 회의 새로운 액션을 적용해서는 안됩니다 (http://stackoverflow.com/a/36235426/3402095). 다음에 유의할 점은 일단 만들어진 액션은 수정할 수 없습니다. 즉, 액션 매개 변수를 한 번 설정하면 나중에 수정할 수 없습니다. 또한 Enemy 변수는 전역 변수이므로 이해가되지 않습니다. 마지막으로 추가 된 적에 대한 참조 만 유지합니다. 내 말은, 당신의 논리가 아마도 그 경우에도 틀릴 것이라는 것입니다 ... – Whirlwind