使用 Swift 将精灵旋转到 SpriteKit 中不精确的精灵位置

2023-12-01

我正在尝试将球员旋转到触球位置。使用触摸移动功能,我将位置设置为变量。然后我调用一个函数。可以用,但是角度不对。 Location 是全局变量,player 是我想要转动的精灵。大约倾斜了15度。

   func rotatePlayer(){

     let angle = atan2(location!.y - player!.position.y , location!.x - player!.position.x)
    player?.zRotation = angle
}

根据SpriteKit 最佳实践 doc

使用与 SpriteKit 的坐标和旋转约定相匹配的游戏逻辑和艺术资源。这意味着将艺术品定向到右侧。如果您将图稿定向到其他方向,则需要在图稿使用的约定和 SpriteKit 使用的约定之间转换角度。

由于默认的宇宙飞船指向上方(当 zRotation 为 0 时),因此您需要将角度偏移 90 度(pi/2 弧度),以便当 zRotation 为零时飞船面向右侧:

player?.zRotation = angle - CGFloat(M_PI_2)

或者,您可以将宇宙飞船旋转到右侧。要旋转图像,请单击 Assets.xcassets,然后单击 Spaceship。右键单击太空飞船图像,然后选择“在外部编辑器中打开”菜单项。这将在预览应用程序中打开图像。在“预览”中,选择“工具”>“向右旋转”并退出“预览”。通过旋转图稿,您的代码应该无需任何更改即可运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 将精灵旋转到 SpriteKit 中不精确的精灵位置 的相关文章

随机推荐