我上个月开始学习使用Swift进行编码。这是我的第二个个人项目。 我正在制作一款桌面游戏,例如" Monopoly"或者其他的东西。这是我原型的图像:my table top board game
我使用arc4random作为骰子并使用此代码移动角色/玩家:
if positionPlayer1 == 1 {
let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 1 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
player1.runAction(SKAction.moveByX(-66, y: 0, duration: 1))
}
} else if positionPlayer1 == 2 {
let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 1 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
player1.runAction(SKAction.moveByX(-44, y: 0, duration: 1))
}
我也尝试过:
player1.runAction(SKAction.moveByX(-66, y: 0, duration: 1))
sleep(1)
问题是:角色等待e直接跑到最终位置的总时间。让我们说骰子给出6,角色等待6秒并跑到最后位置。这在直线上不是问题,但如果运动通过角落,则角色直接对角线切割到最终位置,而不是按照预期通过每个房屋。 任何帮助将不胜感激。
编辑:我决定尝试物理。我创造了很多SKSpriteNode"墙壁"。对于我使用的所有节点:
squareBlock02.physicsBody?.allowsRotation = false
squareBlock02.physicsBody?.pinned = true
squareBlock02.physicsBody?.dynamic = false
结果是玩家击中那些墙并移动它们。我尝试了质量,密度......没有什么能阻止玩家从所有墙壁上推开它。
答案 0 :(得分:0)
感谢所有试图提供帮助的人。
我终于在这个网站找到了答案:http://www.gamefromscratch.com/post/2014/07/02/Game-development-tutorial-Swift-and-SpriteKit-Part-4-Actions.aspx
import SpriteKit
// Solution found: http://www.gamefromscratch.com/post/2014/07/02/Game-development-tutorial-Swift-and-SpriteKit-Part-4-Actions.aspx
class GameScene: SKScene {
let player = SKSpriteNode(imageNamed: "Player_01-2.png")
override func didMoveToView(view: SKView) {
/* Setup your scene here */
player.anchorPoint = CGPoint(x:0.5,y:0.5)
player.position = CGPoint(x:view.bounds.midX,y:view.bounds.midY)
self.addChild(player)
doStuff()
}
func doStuff(){
var actions = Array<SKAction>()
actions.append(SKAction.moveTo(CGPoint(x:300,y:300), duration: 1))
actions.append(SKAction.rotateByAngle(6.28, duration: 1))
actions.append(SKAction.moveBy(CGVector(dx: 150,dy: 0), duration: 1))
actions.append(SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 0.5, duration: 1))
let sequence = SKAction.sequence(actions)
player.runAction(sequence)
}
}