나는 에서 많은 CCEase*
기능을 사용한다. Cocos2D은 here으로 기술되어있다. iOS 7 스프라이트 키트도 SKActionTimingMode
입니다. 단 간단한 모드. 어떻게 CCEaseElasticIn
또는 CCEaseBounceIn
효과를 사용하여 얻을 수 스프라이트 키트?스프레이 액션에 다른 여유 효과를 적용하는 방법은 무엇입니까?
답변
스프라이트 키트는 개발자가 스프라이트 동작의 세부 사항을 제어 할 것이라는 기대에 따라 의도적으로 제한된 왼쪽 여유 조정 (또는 트위닝)을 사용합니다. 기본적으로 스프라이트의 속성 (회전, 위치, 크기 등)을 변경하기 전에 커스텀 액션을 만들고 매개 변수에 이징 커브를 적용해야합니다. 여기에 예제가 있습니다.
CGFloat initialScale = mySprite.xScale;
SKAction *scaleAction = [SKAction customActionWithDuration:duration actionBlock:^(SKNode *node, CGFloat elapsedTime) {
CGFloat t = elapsedTime/duration;
CGFloat p = t*t;
CGFloat s = initialScale*(1-p) + scale * p;
[node setScale:s];
}];
[mySprite runAction:scaleAction];
여유를 결정하는 부분은 p = t*t
입니다. 그래서, p
는의 함수이다 t
있도록 :
t
이 0,p
0t
이 1 일 때,p
는 1
당신이 시작된다는 것을 의미합니다 즉 끝에서 시작하고 끝나지 만 그 중간에있는 커브의 모양이 어떻게 당신이 거기에 도착할 것인지를 결정할 것입니다. 감쇠 기능은 여기에 표시된 것과 같이 간단 할 수 있습니다. 기본적으로 쉽게 들어가거나 탄성 또는 바운스와 같이 매우 복잡합니다. http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm 또는 로버트 페너의 방정식에 대한 상세한 설명을 : 자신을 생성하려면 다음을 시도 임의의 완화를 들어 http://www.robertpenner.com/easing/
는 Kardasis '답이 다 나와 있어요.
애니메이션에 튀는 효과를 추가하는 쉬운 방법을 찾고 있다면 UIKit에서 수행되는 방식과 일치합니다. 나는 당신을 위해 뭔가를 가지고 있습니다.
Apple은 몇 년 전 UIView 애니메이션을 수행 할 때 스프링 댐핑과 초기 속도를 설정함으로써 UIKit에서 스프링 애니메이션을 소개했습니다. 불행히도 그들은 SpriteKit에서 구현하지 않았기 때문에, 저만의 라이브러리를 만들었습니다.
댐핑 및 속도 매개 변수를 추가하여 대부분의 팩토리 메서드를 복제하는 SKAction의 확장 집합입니다.
이 코드는 GitHub의에, 그것을 사용 주시기 :
https://github.com/ataugeron/SpriteKit-Spring 나는 애플이 우리가 customActionWith를 사용하고자하는 것 같아요 ... 이런 경우에. – LearnCocos2D
'customActionWith'를 어떻게 만들 수 있는지 실마리가 있습니까? – Pablo
개념적으로 만 개념적으로 elapsedTime과 duration을 사용하고 둘 다 여유 작업에 투입하여 원하는 속성 (즉, 위치)이 주어진 elapsedTime에서 얼마만큼 변경되어야 하는지를 결정합니다. 예를 들어 cocos2d에서 적용 할 수있는 여유 함수. – LearnCocos2D