# Tip or Trick
# 타이머 추가하기 싫을때
가끔 코드로 뭔가 실행시키고나서 몇초후 다른 코드를 실행시키고싶을때가 있다.
이럴땐 보통 Timer노드를 추가하고, Timer.timeout signal을 통해서 특정 시간이 지나면 시그널함수를 호출하게하여 우리가 원하는 결과를 만들어내곤한다.
하지만 이게 은근히 귀찮고 보기 안좋을때도 있다. 노드트리가 조금 지저분하게? 변경될수도있고, 시그널 커넥트하는게 귀찮다.
게다가 타이머노드에서 oneshot 옵션을 체크하는걸 깜빡하면 버그가 생길 여지도 있다.
그래서 그냥 아래 예시처럼 간단하게 tween을 사용하는 팁을 공유하고자한다.
label을 보여주고, 1.5초후에 라벨을 invisible하게 만드는 간단한 코드이다.
물론 타이머로 구현해도 된다. 하지만 이렇게 간단한 경우 난 tween을 이용하는게 더 편하고 직관적이더라.
display_level_label.show()
var tween = create_tween()
tween.tween_interval(1.5)
tween.finished.connect(func():
display_level_label.hide()
)
# move_and_slide
CharacterBody에는 move_and_slide라는 함수가 있다.
단순히 velocity를 변경한다고해서 charbody가 움직이는게 아니라,
변경 후 move_and_slide
메소드를 호출해줘야한다.
그런데 예를 들어서 플랫포머게임이라서 중력 노드를 개발해서 charbody에 붙였다치자.
움직이는 코드에도 move_and_slide 메소드가 있어서 실행되고있고, 중력 노드에도 move_and_slide 메소드가 실행될 수 있다.
다시말하면 move_and_slide가 프레임당 2번 이상 호출되는 상황에서 문제가 생길 수 있다.
정확히 말하면 문제가 생긴다기보단 의도한 속도랑 다른 결과가 나올 수 있다. 주의해야한다.