2011-09-01 3 views
6

스크래치에서 애니메이션을 부드럽게하려면 어떻게해야합니까? 주로 오른쪽 화살표를 누르고 있으면 눈에 띄는 흔들림이없이 바로 진행됩니다. 또한 스크래치를 사용하면 화살표를 길게 누르면 잠시 기다릴 수 있습니다. 어떻게 이런 것들을 부드럽게 할 수 있을까요?스크래치 모션을 스크래치에서 부드럽게 처리

답변

2

스크래치를 사용하면 장거리 또는 간격이있는 Glide을 사용하여 매우 부드러운 동작을 얻을 수 있습니다. 그러나이 방법의 단점은 스프라이트가 가장자리 또는 충돌 감지와 같은 감지를 수행하기 전에 글라이드 작업이 완료되어야한다는 것입니다. 이것은 종종 바람직하지 않습니다.

키를 누를 때 말하는 작은 지연은 실제로 키보드의 반복 속도와 직접 연결됩니다. 키보드의 키를 누르면 해당 키 이벤트가 전송되지만 반복이 시작되기 전에 약간의 지연이 있습니다. 시스템 키보드 반복 속도를 변경하는 방법을 찾을 수 있으면 스크래치로 이어집니다.

스크래치에서 수행 할 수있는 최적화 정도에는 한계가 있습니다. 결국 매우 기본적인 (아주 재미있는) 엔트리 레벨 프로그래밍 환경입니다. :)

2

당신은 "누르지 화살표"까지 할 수있는 화살표가 다음

은 설정된 시간 간격으로 키를 누르면 확인하지 않습니다

을 누르면 화살표하지 때까지 반복 이동 (또는 글라이드) 을 누르면

, 더 부드럽게 움직입니다.

3

나는 그것이 오래된 질문이라는 것을 알고있다. 하지만 누군가가 해결책을 찾고 있다면,이 스크래치 프로젝트를 확인하십시오 : http://scratch.mit.edu/projects/276298/

영원히 루프를 추가하고이 루프 안에 화살표 키가 눌러져 있는지 확인하십시오. 그것이있는 경우 - 이동하십시오. 이 방법을 사용하면 키보드 반복 속도에 종속되지 않습니다.

1

당신은이 작업을 수행 할 수 있습니다

오른쪽 화살표를 누르면 매번 확인하고 만약 그렇다면, 그것은 하나 변수 xs을 변경
When flag pressed 
forever 
    if (right arrow pressed?) then 
    change xs by 1 
    xs = xs * 0.8 
    change x by (xs) 

. 나중에 xs에 0.8을 곱해서 값이 현저하게 감소합니다.

그런 다음 스프라이트의 x를 varxs으로 변경합니다.

+0

** 경고 : 오류 코드! **'xs '재설정은 어디에서 할 수 있습니까? 'xs'의 값은'1'에서'0.8 '로'0.64'에서'0.512''에서'0.4096'까지 매우 빨리 갈 것입니다 ... 그것은 1에서 시작한다고 가정합니다! 'set [xs v] to (number)'가 없기 때문에 값은 ** never reset **입니다! – wizzwizz4

+0

코드가 작동합니다. 'xs'의 값은 오른쪽 화살표 키를 누르지 않으면 지수 적으로 더 작아집니다. 그러므로 'xs'는 아무 키도 누르지 않으면 제로에 가까워지고 오른쪽 화살표 키를 계속 누르고 있으면 4 (0.8/(1-0.8)로 계산 됨) 값이됩니다. –

0

당신이 할 수있는 한 가지 방법은 변수와 사용자 정의 블록을 사용하여 모션을 부드럽게하는 인수를 만드는 것입니다. speed x라는 변수를 추가하고 영원히 X를 사용하여 X를 변경하십시오. 스냅 샷이나 예제가 없지만 사용자 정의 블록의 스크립트를 사용하여 부드럽게 글라이드 할 수 있습니다.

관련 문제