이 게시물의 지침에 따라 여기; Swift-Making an SKNode simply "move forward" on an angle 나는 무작위 각도를 가지고 내 스프라이트가 그 각도에서 떨어져 이동하도록,이 코드를 작성했습니다 : 내 게임을 실행할 때Swift-SKSpriteNode 속도가 변경되지 않습니다.
func setDegrees() {
let ball1Degrees:UInt32 = arc4random_uniform(360)
if ball1Degrees > 300 {
ball2Degrees = Int(ball1Degrees) - 360
ball3Degrees = Int(ball1Degrees) - 300
}
else if ball1Degrees > 240 {
ball2Degrees = Int(ball1Degrees) + 60
ball3Degrees = Int(ball1Degrees) - 360
}
else {
ball2Degrees = Int(ball1Degrees) + 60
ball3Degrees = Int(ball1Degrees) + 120
}
}
func myFunction() {
ball1.position = CGPoint(x: 0, y: 0)
ball2.position = CGPoint(x: 0, y: 0)
ball3.position = CGPoint(x: 0, y: 0)
setDegrees()
if ball1Degrees < 90 {
ball1.physicsBody?.velocity = CGVector(dx: 1, dy: tan(Double(ball1Degrees) * (.pi/180)))
}
if ball1Degrees == 90 {
ball1.physicsBody?.velocity = CGVector(dx: 1, dy: 0)
}
if ball1Degrees > 90 && ball1Degrees <= 180 {
ball1.physicsBody?.velocity = CGVector(dx: -1, dy: tan(Double(180 - ball1Degrees) * (.pi/180)))
}
if ball1Degrees > 180 && ball1Degrees <= 270 {
ball1.physicsBody?.velocity = CGVector(dx: -1, dy: -tan(Double(ball1Degrees - 180) * (.pi/180)))
}
if ball1Degrees > 270 && ball1Degrees <= 0 {
ball1.physicsBody?.velocity = CGVector(dx: 1, dy: -tan(Double(360 - ball1Degrees) * (.pi/180)))
}
if ball2Degrees < 90 {
ball2.physicsBody?.velocity = CGVector(dx: 1, dy: tan(Double(ball2Degrees) * (.pi/180)))
}
if ball2Degrees == 90 {
ball2.physicsBody?.velocity = CGVector(dx: 1, dy: 0)
}
if ball2Degrees > 90 && ball2Degrees <= 180 {
ball2.physicsBody?.velocity = CGVector(dx: -1, dy: tan(Double(180 - ball2Degrees) * (.pi/180)))
}
if ball2Degrees > 180 && ball2Degrees <= 270 {
ball2.physicsBody?.velocity = CGVector(dx: -1, dy: -tan(Double(ball2Degrees - 180) * (.pi/180)))
}
if ball2Degrees > 270 && ball2Degrees <= 0 {
ball2.physicsBody?.velocity = CGVector(dx: 1, dy: -tan(Double(360 - ball2Degrees) * (.pi/180)))
}
if ball3Degrees < 90 {
ball3.physicsBody?.velocity = CGVector(dx: 1, dy: tan(Double(ball3Degrees) * (.pi/180)))
}
if ball3Degrees == 90 {
ball3.physicsBody?.velocity = CGVector(dx: 1, dy: 0)
}
if ball3Degrees > 90 && ball3Degrees <= 180 {
ball3.physicsBody?.velocity = CGVector(dx: -1, dy: tan(Double(180 - ball3Degrees) * (.pi/180)))
}
if ball3Degrees > 180 && ball3Degrees <= 270 {
ball3.physicsBody?.velocity = CGVector(dx: -1, dy: -tan(Double(ball3Degrees - 180) * (.pi/180)))
}
if ball3Degrees > 270 && ball3Degrees <= 0 {
ball3.physicsBody?.velocity = CGVector(dx: 1, dy: -tan(Double(360 - ball3Degrees) * (.pi/180)))
}
}
myFunction()
하지만, 위의 속도 변화 중 어느 것도 적용되는 것으로 나타 없습니다. 화면 중앙으로의 재배치가 성공적으로 수행되고 특히 여기서는 관련이없는 몇 가지 스케일링 SKAction 명령이있어 잘 작동합니다. 왜 속도가 변하지 않습니까? 컴퓨터의 시뮬레이터가 처리 할 코드가 너무 많습니까? 아니면 어딘가에서 실수를 했나요? 나는 어떤 피드백에 대해서도 감사 할 것입니다.
미리 감사드립니다.
당신이 심령을 작성하는 것을 잊지 않았다 시체? 'physicsBody!'로 변경하십시오. 충돌이 있는지 확인하십시오. 만약 그렇다면, 당신은 물리학 단체를 만드는 것을 잊었다는 뜻입니다. – Sweeper
내 GameScene.sks의 각 스프라이트 속성 관리자에서 경계 원 유형 물리학 자 본을 지정했지만 아무 일도 일어나지 않습니다. 내 GameScene.swift에서 게임을 만들려면 뭔가를 추가해야합니까? 또는 Attributes inspector에서 설정을 이동하도록 허용 할 수 있도록 설정해야합니까? –
나는 또한 당신의 제안을 시도했다. 그리고 아니오, 그것은 충돌하지 않는다? 다른 아이디어? –