2015-11-20 20 views
6

Trong trò chơi, tôi muốn gọi một hàm vài giây một lần để tạo các đối tượng ngẫu nhiên từ một mảng. Hiện tại tôi đang di chuyển đối tượng này bởi SKAction như thế này:SpriteKit - Tạo đối tượng ngẫu nhiên và di chuyển chúng bằng deltatime

func createRandmoObject() { 
    let random = arc4random_uniform(4) 
    randomObject = randomObjects[random] 

    randomObject.runAction(SKAction.moveTo(CGPoint(x: randomObject.position.x, y: 0 - randomObject.size.height), duration: 3)) 

    addChild(randomObject) 

} 

và khi đối tượng chạm vào trình phát, nó sẽ được gọi lại. Vấn đề với phương pháp này là tôi thấy rằng chuyển động của đối tượng không phải lúc nào cũng trơn tru, khi tốc độ khung hình giảm xuống vì một lý do nào đó, sự vấp ngã xảy ra. Bây giờ tôi biết cách tính toán thời gian delta trong phương thức cập nhật, nhưng tôi không chắc chắn cách áp dụng nó cho một đối tượng khi đối tượng đó tiếp tục thay đổi và không phải lúc nào cũng trên màn hình, và có một số đối tượng khác như vậy chúng như kẻ thù, và có một chức năng khác tạo ra kẻ thù khác) Vậy làm thế nào tôi có thể biến những vật thể ngẫu nhiên đó di chuyển theo thời gian thay vì SKAction?

+0

SpriteKit sử dụng một bước thời gian thay đổi cho vật lý của nó. Thật không may điều này có nghĩa là các đối tượng sẽ xuất hiện để "nhảy" nếu thời gian đồng bằng cao. Nếu bạn không muốn điều này xảy ra (tức là giữ cho chuyển động độc lập với tốc độ khung hình), bạn sẽ cần tự tính toán vật lý của các nút, chẳng hạn như tăng vị trí của các nút trong phương thức cập nhật. Bạn về cơ bản sẽ cần phải viết động cơ vật lý của riêng bạn. –

+0

Tôi có thể tăng vị trí trong "cập nhật" theo cách thủ công, nhưng cách thực hiện khi nút không phải lúc nào cũng ở đó, phải mất vài giây giữa các lần sinh sản. – Abdou023

+0

Và đôi khi các nút mới được sinh ra khi các nút trước đó vẫn còn ở đó. – Abdou023

Trả lời

0

Trong khi bạn có thể sử dụng SKAction trong các dự án spritekit, nếu trò chơi của bạn dựa trên vật lý, bạn nên sử dụng phương pháp cập nhật cho tất cả các chuyển động sprites của bạn. SKactions là ok cho các trò chơi đơn giản nhưng nếu trò chơi của bạn liên quan đến va chạm và chuyển động ngẫu nhiên, phương pháp cập nhật là sự lựa chọn để đi.

Các vấn đề liên quan