【发布时间】:2017-03-20 18:29:44
【问题描述】:
在我的游戏中,我需要使用鼠标来选择单位。
但是,我遇到了一些问题,因为我不知道如何获取相对于游戏而不是相对于窗口的点击坐标。
例如,如果 Unit 1 位于游戏的 (0,0) 点,则它可能位于窗口上的任何点,具体取决于我如何平移和缩放窗口,但我希望鼠标单击返回 ( 0,0) 无论我如何移动窗口只要我点击同一个位置。
我现在正在使用:
override func mouseDown(with event: NSEvent) {
eventPos = event.location(in: self)
...
}
(其余代码与鼠标点击位置无关)。
这一切都在 GameScene 中,它是一个 SKScene。那么如何获取鼠标点击相对于 GameScene 的位置呢?
【问题讨论】:
-
eventPos应该在场景坐标中。您是否使用 SpriteKit 的内置摄像头进行平移/缩放?另外,你有没有试过let selectedUnit = atPoint(eventPos)来选择单位? -
我使用的是通过代码制作的相机,它是一个 SKCamera 节点,但不是您通过在游戏场景 SKS 中拖放一个而制作的相机。
-
平移和缩放是我做的自定义功能。
-
如果您使用内置的 SpriteKit 相机进行平移/缩放,鼠标位置将在您上面提供的代码的场景坐标中。我还怀疑它会简化您的应用开发工作。
标签: swift sprite-kit mouseevent skscene nsevent