Code: Select all
let box = ModelEntity(mesh: .generateBox(size: 0.1))
anchor.addChild(box)
box.position = SIMD3(0.1, 0.2, 0.3)
let rotationAction = FromToByAction(by: Transform(pitch: 10, yaw: 20, roll: 30), isAdditive: false)
let rotationAnimation = try! AnimationResource.makeActionAnimation(for: rotationAction, duration: 3, bindTarget: .transform)
let translationAction = FromToByAction(by: Transform(translation: SIMD3(0.1, 0, 0)), isAdditive: false)
let translationAnimation = try! AnimationResource.makeActionAnimation(for: translationAction, duration: 6, bindTarget: .transform)
box.playAnimation(try! .group(with: [rotationAnimation, translationAnimation]))
Dann endet die Rotationsaktion nach 3 Sekunden, und die Box „springt“ plötzlich an eine Position (als ob keine Drehung stattgefunden hätte) und setzt die Bewegungen in einer geraden Linie fort.
Es sieht so aus, als ob Rotation und Translation einander stören, da sie beide an die Transformation gebunden sind, was eine einzelne Eigenschaft eines ist Entity.
Ich habe versucht, isAdditive umzuschalten und das gleiche Ergebnis (nicht ganz sicher, was isAdditive macht)
Ich frage mich, wie ich sicherstellen kann, dass sie zusammenarbeiten, ohne sich gegenseitig zu stören, wie in SpriteKit oder SceneKit? (das heißt, die Box dreht sich von selbst, bewegt sich aber immer noch in einer geraden Linie; nach 3 Sekunden setzt sie die Bewegung dann einfach in einer geraden Linie fort, ohne zu springen.
Mobile version