【发布时间】:2018-12-29 01:23:00
【问题描述】:
我有这个屏幕上的操纵杆,它通过改变它的位置来移动精灵,而且效果很好。我已经为精灵制作了一些墙来碰撞(使用物理)。而且它并没有像预期的那样走得更远,但是如果我继续进入墙壁精灵似乎会闪烁(改变它的位置一毫秒并立即返回)
override func update(deltaTime seconds: TimeInterval) {
cNode.position = CGPoint(x: playerCurrentPosition.x + xChange,
y: playerCurrentPosition.y + yChange)
}
做了一些调试,似乎有一个更新精灵的位置不正确:
pos Y: -19.168764114379883
pos Y: -19.164892196655273
pos Y: -19.16112518310547
pos Y: -29.928884506225586. <---
pos Y: -19.15281105041504
pos Y: -19.148771286010742
更新:
好的,我尝试过像这样使用 move By 移动:
print("[", xChange,", ",yChange,"]", cNode.position.y)
cNode.run(SKAction.moveBy(x: xChange, y: yChange, duration: 1/60))
我在 Y 位置也有同样的闪烁:
xChange, yChange, cNode.position.y
[ -0.08623046134167665 , 0.4925081801724735 ] -19.026506423950195
[ -0.08623046134167665 , 0.4925081801724735 ] -19.026336669921875
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02557373046875
[ -0.08623046134167665 , 0.4925081801724735 ] -29.92888641357422
[ -0.08623046134167665 , 0.4925081801724735 ] -29.928884506225586
[ -0.08623046134167665 , 0.4925081801724735 ] -29.928884506225586
[ -0.08623046134167665 , 0.4925081801724735 ] -29.928884506225586
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02621841430664
[ -0.08623046134167665 , 0.4925081801724735 ] -19.025728225708008
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02647590637207
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02564811706543
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02585792541504
[ -0.08623046134167665 , 0.4925081801724735 ] -19.02660369873047
[ -0.08623046134167665 , 0.4925081801724735 ] -19.025630950927734
[ -0.08623046134167665 , 0.4925081801724735 ] -19.026046752929688
[ -0.08623046134167665 , 0.4925081801724735 ] -19.026309967041016
[ -0.08623046134167665 , 0.4925081801724735 ] -19.025686264038086
更新 2:
我已经记录了这个问题:Here
更新 3:
我的外部绿色矩形似乎有一些碰撞遮罩,我移除了它们,它变得更好了,但仍然有一些弹跳,看看:Here (红色框固定在绿色框上)
【问题讨论】:
标签: swift sprite-kit