SCNPhysicsWorld错误

2023-11-23

我一直在摆弄 swift 并试图让物理世界正常工作。

这是我得到的错误 “i386 架构的未定义符号: “_OBJC_CLASS_$_SCNPhysicsWorld”,引用自: GameViewController.o 中的 __TFC3sk218GameViewController11viewDidLoadfS0_FT_T_ ld:未找到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) ”

我认为它与链接或导入一个我不是的库有关,但我添加了我能找到的所有我认为可以修复它的内容(在游戏工具包的其他帖子中找到)有人知道这可能是什么吗?谢谢。


Obj-c / Swift 桥存在一个错误。

在等待解决方案时,您可以通过为自己创建一个临时桥来解决此问题:

添加以下类:

PhysWorldBridge.h

#import <Foundation/Foundation.h>
#import <SceneKit/SceneKit.h>//

@interface PhysWorldBridge : NSObject

- (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed;
- (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity;

@end

物理世界桥.m

#import "PhysWorldBridge.h"

@implementation PhysWorldBridge

- (id) init
{
    if (self = [super init])
    {        
    }
    return self;
}

- (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed
{
    scene.physicsWorld.speed = speed;
}

- (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity
{
    scene.physicsWorld.gravity = gravity;
}

@end

Xcode 应该提示你创建一个XXX-Bridging-Header.h当您添加第一个 Objective-c 文件时。让它创建这个文件。

将类的导入添加到“XXX-Bridging-header.h”:

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "PhysWorldBridge.h"

现在你可以使用这个(hacky)桥来设置 Swift 的属性:

//scene.physicsWorld.speed = 2.0
// CAN'T USE ABOVE OR LINKER ERROR


let bridge = PhysWorldBridge();
bridge.physicsWorldSpeed(scene, withSpeed: 2.0);
//This call bridges properly

//So would the gravity one:
bridge.physicsGravity(scene, withGravity: SCNVector3Make(0, -90.81, 0));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SCNPhysicsWorld错误 的相关文章

随机推荐