2015-01-22 1 views
0

저는 libgdx를 처음 사용하고있어서 저에게 제공되는 학습을 즐기고 있습니다.씬 2d의 Lib gdx와 사용자 정의 액터

저는 현재 Actor 클래스를 확장하는 일부 사용자 지정 액터를 만들고 있는데, 화면 주위로 움직입니다.

제 질문은 setX(), setY()를 사용하여 액터를 이동할 때 어떻게 act 메소드의 매개 변수로 제공된 float 델타로 적절하게 스케일됩니까?

예,

@Override 
public void act(float delta) { 

    if (wasTouched) { 

     setY(getY() - .5f); 
    } 
} 

어떻게 제대로 델타와 움직임을 확장 할 수 있습니다? libgdx Actor 클래스 내에이 함수가 내장되어 있습니까?

답변

0

내장 기능이 없습니다. 나는 당신의 update 메쏘드가 어떻게 생겼는지 모르겠으므로, 손가락이 눌려지는 모든 프레임에서 wasTouched이 참이 될지 모르겠습니다.

그러나 손가락을 누른 상태에서 특정 속도로 물체를 이동하려면 먼저 원하는 속도가 필요합니다. 그것은

private static final float SPEED_WHEN_TOUCHED = 5.0f; //in viewport units per second 

처럼 일정 수 또는 초당 단위는 시간이 지남에 따라 변경하는 일부 변수가 될 수 있지만, 어느 쪽이든, 그것은 뷰포트 (세계)에 있어야합니다.

그런 다음 해당 속도로 무언가를 이동하려면 속도에 델타 시간 (초 단위)을 곱하여 원하는 동작 양을 얻습니다.

@Override 
public void act(float delta) { 
    if (wasTouched) { 
     y += SPEED_WHEN_TOUCHED * delta; 
     positionChanged(); 
    } 
} 
+0

감사합니다.이 내용이 나에게 정리되어 있습니다. 감사합니다. – Prolog

관련 문제