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

标签 swift sprite-kit mouseevent skscene nsevent

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

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

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

现在我正在使用:

override func mouseDown(with event: NSEvent) {
    eventPos = event.location(in: self)
    ...
}

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

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

最佳答案

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

eventPos = view!.convert(event.locationInWindow, to: view!.scene!)

关于swift - 鼠标点击相对于场景的位置,而不是窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42911319/

相关文章:

ios - 在 SpriteKit 中将动态物理对象保持在手指下

ios - UIStackView 是否像 UITableView 一样有委托(delegate)?

iOS、SpriteKit 将 SKTextureAtlas/SKTexture 转换为 UIImage

ios - Swift:设置 AVAudioSession 输出音量

swift - SpriteKit 。停止使用 CameraNode 旋转纹理

ios - 框架的接触方法

java - 使用自定义握把/ handle 杆移动 JFrame

cocoa - CABasicAnimation后NSView不响应鼠标事件

javascript - 使用事件对象调用 javascript 鼠标事件

swift - 如何检查变量是否未在 Swift 中初始化?