gpt4 book ai didi

scenekit - 相对于根节点移动 SCNNode

转载 作者:行者123 更新时间:2023-12-01 03:45:09 30 4
gpt4 key购买 nike

我正在通过编写一个游戏来学习 SceneKit,在这个游戏中你飞过小行星场躲避物体。最初,我通过移动/旋转相机来做到这一点,但我意识到在某些时候我会用完坐标空间,最好将所有对象移向相机(并在我完成后处理它们)通过”他们)。

但我似乎无法让他们动起来。我移动相机的原始代码如下所示:

[cameraNode setTransform:CATransform3DTranslate(cameraNode.transform, 0.f, 0.f, -2.f)];

我想我可以对每个小行星节点做类似的事情:
[asteroidNode setTransform:CATransform3DTranslate(cameraNode.transform, 0.f, 0.f, 2.f)];

但他们不动。如果我添加一个基本动画:
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position.z"];
anim.byValue = @10;
anim.duration = 1.0;
[asteroidNode addAnimation:anim forKey:@"move forward"];

小行星会移动,但可以预见,完成后会迅速回到原来的位置。

这感觉像是一个新手错误,但我在网上找不到任何解决这个问题的方法。我会以错误的方式解决这个问题吗?

谢谢,
杰夫

最佳答案

按照您的方式移动cameraNode应该可以工作,但请确保“cameraNode”是您当前的pointOfView,否则它将无效(检查scnView.pointOfView == cameraNode)。

如果你想移动节点,你应该翻译“node.transform”(而不是“cameraNode.transform”)。但实际上这样做更简单:

node.position = SCNVector3Make(node.position.x, node.position.y, node.position.z+2.0);

还要确保这些节点上没有运行的动画或物理可以覆盖您的更改。

关于scenekit - 相对于根节点移动 SCNNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586059/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com