是否有一种相对简单的方法来旋转SKSpriteNode,使其始终面向它正在移动的方向?我的类Gamescene有一个物体系统,它们的相对物理体在碰撞时互相施加冲动.这使得跟踪对象移动的确切方向变得相对困难.一些对象也没有规律地形状,这使得事情变得更加混乱.我尝试过使用三角函数(例如arctangent),但它只能在非常特殊的情况下使用.可能有办法找出SKSpriteNode轨迹的角度,以便我可以将对象旋转到该角度?感谢您的任何帮助,您可以提供!
编辑:
我为CGVector创建了一个扩展,并尝试在两个对象相撞时,在其速度方向上旋转SKSpriteNode(感谢0x141E),但它似乎没有正常工作
func didBeginContact(contact: SKPhysicsContact) {
var firstBody : SKPhysicsBody = contact.bodyA
var secondBody : SKPhysicsBody = contact.bodyB
if ((firstBody.categoryBitMask == PhysicsCatagory.Blade) && (secondBody.categoryBitMask == PhysicsCatagory.Laser))
{
if (secondBody.node != nil)
{
if (saberAngle <= 0 && LCR == 1) // Blade pointing right
{
let rebound = CGVectorMake(-reboundStrength*sin(1.5707 + saberAngle), reboundStrength*cos(1.5707 + saberAngle))
secondBody.applyImpulse(rebound)
}
else if (saberAngle > 0 && LCR == -1) // Blade pointing left
{
let rebound = CGVectorMake(reboundStrength*sin(1.5707 - saberAngle), reboundStrength*cos(1.5707 - saberAngle)) …Run Code Online (Sandbox Code Playgroud) 在我的应用程序文档文件夹中,我有一个文件,我试图将每个字节读入一个数组,UInt8其中每个元素代表一个字节。我该怎么做呢?该文件恰好称为 Q1.dat。
这是我失败的尝试:
func readArray() -> [Int]? {
if let arrayPath: String = createArrayPath() {
if let arrayFromFile: [Int] = NSArray(contentsOfFile: arrayPath) as? [Int] {
return arrayFromFile
}
}
return nil
}
func createArrayPath () -> String? {
if let docsPath: String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last {
return ((docsPath as NSString).stringByAppendingPathComponent("Q1") as NSString).stringByAppendingPathExtension("dat")
}
return nil
}
Run Code Online (Sandbox Code Playgroud)