首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SK3dNode沿着y轴旋转

SK3dNode沿着y轴旋转
EN

Stack Overflow用户
提问于 2016-11-17 13:16:21
回答 1查看 799关注 0票数 2

我在spritekit有一颗3D恒星,让它沿着z轴旋转,所以看起来就像它的旋转。

但是我不能让它旋转。该文件是我导入到我的项目中的.dae文件。恒星本身承载,但什么也没有发生。有谁知道吗?

代码语言:javascript
复制
import SpriteKit

override func didMove(to view: SKView) {
    let starScene = SCNScene.init(named: "star.dae")
    let star3d = SK3DNode(viewportSize: CGSize(width: 330, height: 330))
    star3d.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
    star3d.scnScene = starScene
    star3d.zPosition = 3
    star3d.isPlaying = true
    star3d.scnScene = starScene

    let camera = SCNCamera()
    camera.xFov = 60
    camera.yFov = 60

    var cameraNode = SCNNode()
    cameraNode = SCNNode()
    cameraNode.camera = camera
    cameraNode.position = SCNVector3(x: 0, y: 0, z: 15)

    let rotationAnimation = CABasicAnimation(keyPath: "rotation")
    rotationAnimation.toValue = NSValue(scnVector4: SCNVector4Make(1, 2, 3, .pi * 2))
    rotationAnimation.duration = 6
    rotationAnimation.repeatCount = FLT_MAX

    starScene?.rootNode.addChildNode(cameraNode)
    star3d.pointOfView = cameraNode
    self.addChild(star3d)

    cameraNode.addAnimation(rotationAnimation, forKey: nil)
}
EN

回答 1

Stack Overflow用户

发布于 2016-11-18 07:57:39

多亏了哈尔·米勒。通过在spritekit中添加一个sk3dnode,下面的代码可以实现以下旋转星型效果。

media0.giphy.com/media/rOhH4D15SlWCc/giphy.gif

如果动画没有在您的设备上运行。在项目.plist文件中添加下一行。PrefersOpenGL =是

代码语言:javascript
复制
let starScene = SCNScene.init(named: "Round_CStar_obj.obj.dae")
    let star3d = SK3DNode(viewportSize: CGSize(width: 300, height: 300))
    star3d.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
    star3d.scnScene = starScene
    star3d.name = "star3d"
    star3d.zPosition = 3
    star3d.zRotation = 6
    star3d.isPlaying = true
    star3d.scnScene = starScene
    self.addChild(star3d)

    let camera = SCNCamera()
    camera.usesOrthographicProjection = true
    camera.orthographicScale = 9
    camera.zNear = 0
    camera.zFar = 200

    var cameraNode = SCNNode()
    cameraNode = SCNNode()
    cameraNode.camera = camera
    cameraNode.position = SCNVector3(x: 0, y: 0, z: 0)
    cameraNode.eulerAngles = SCNVector3(x: 0, y: 0, z: 0)
    starScene?.rootNode.addChildNode(cameraNode)
    star3d.pointOfView = cameraNode

    let rotationAnimation = CABasicAnimation(keyPath: "rotation")
    rotationAnimation.toValue = NSValue(scnVector4: SCNVector4Make(0, 1, 0, .pi * 2))
    rotationAnimation.duration = 2
    rotationAnimation.repeatCount = FLT_MAX
    cameraNode.addAnimation(rotationAnimation, forKey: nil)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40655943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档