鼠标点击的位置相对于场景,而不是窗口

Stu*_*LTB 4 nsevent mouseevent sprite-kit skscene swift

在我的游戏中,我需要使用鼠标来选择单位。

但是,我遇到了问题,因为我不知道如何获取相对于游戏而不是窗口的点击坐标。

例如,如果 Unit 1 位于游戏的 (0,0) 点,则它可能位于窗口上的任何点,具体取决于我如何平移和缩放窗口,但我希望鼠标单击返回 (0,0 ) 无论我如何移动窗口,只要我点击同一个位置。

现在我正在使用:

override func mouseDown(with event: NSEvent) {
    eventPos = event.location(in: self)
    ...
}
Run Code Online (Sandbox Code Playgroud)

(其余代码与鼠标单击位置无关)。

这一切都在 GameScene 中,它是一个 SKScene。那么如何获取鼠标点击的相对于 GameScene 的位置呢?

Leo*_*bus 5

您需要将您的点从视图转换为场景坐标:

eventPos = view!.convert(event.locationInWindow, to: view!.scene!)
Run Code Online (Sandbox Code Playgroud)