저는 SceneKit에서 스프라이트 시트를 애니메이션화하는 방법을 찾고 있습니다. 몇 가지 연구를 한 후에 Core Animation에서이 작업을 수행하는 방법을 찾았습니다. 가능한 한 애니메이션을 최대한 제어해야하므로 완벽 할 것입니다.SceneKit에서 UV 애니메이션하기
UV가 하나의 스프라이트 시트 프레임 크기로 제한된 간단한 평면 메쉬를 준비했습니다. 그렇게하면 UV를 수평으로 움직이면됩니다. 소재의 contentsTransform 행렬의 관련 요소가 m14 (수평 변환을 담당하는 요소)라는 것을 알았습니다.
[SCNKit ERROR] geometry?.firstMaterial?.diffuse.contentsTransform.m14 is not an animatable path
이 관련 코드입니다 :이와
let spritesheetAnimation = CABasicAnimation(keyPath: "geometry?.firstMaterial?.diffuse.contentsTransform.m14")
spritesheetAnimation.fromValue = 1 - 1/spritesheetFrameCount
spritesheetAnimation.toValue = 0
spritesheetAnimation.byValue = 1/spritesheetFrameCount
spritesheetAnimation.duration = 1.0
spritesheetAnimation.repeatCount = Float.infinity
node.geometry?.insertMaterial(material, atIndex: 0)
node.addAnimation(spritesheetAnimation, forKey: "SpritesheetAnimation")
누구나 가진 경험
그러나 런타임에, SceneKit 다음과 같은 오류가 다시 뱉어? 이 작업을 쉽게 수행 할 수있는 방법이 있는지 또는 내가 잘못된 길을 찾고 있는지 알 수 없습니다. 그래서, 어떤 포인터가 인정 될 것이다!
유감스럽게도 유감스럽게도 같은 오류가 발생했습니다./ –
버그 : http://bugreport.apple .com –
고마워. 또 다른 동안 기다릴거야, 여전히 내 실수 일 수도있다. –