강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của 520alstjr
520alstjr

câu hỏi đã được viết

Tạo trò chơi PC 2D Mariolike bằng Godot Engine

타이머가 적용이 되지않습니다.

Đã giải quyết

Viết

·

56

1

캡처.PNG.webp

장애물 자체제작중 떨어지는 플랫폼을 구현하기위해 밟으면 1초뒤 떨어지는 장애물을 구현하려 하였는데
타이머의 코드를 짰는데도 밟은 직후 바로 떨어집니다, 어디가 문제일까요?

2dgodot-enginegdscriptadventure

Câu trả lời 2

1

serenecode님의 프로필 이미지
serenecode
Người chia sẻ kiến thức

안녕하세요. 용기있게 새로운 기능을 스스로 구현해보시고, 질문 남겨 주셔서 감사합니다.

 

코드 구현 자체만 보면 큰 문제는 없어 보이지만

"떨어지는플랫폼" 자체가 CharacterBody2D 노드로 되어 있어서

캐릭터가 위에서 밟으면 아래로 밀리게 되기 때문에,

밟자마자 바로 떨어지는 것처럼 느껴지실 수 있습니다. (캐릭터끼리 서로 밀어내듯이)

한번 캐릭터로 위에서 누르는 것이 아닌 옆에서 발판을 밀었을 때에도 밀리는지 확인해 보세요.

이 문제가 맞다면 인스펙터 탭에 있는 Collision 항목에서 자신을(Layer) 를 "지형" 에만 체크하시고 (강의에서는 2번에 할당했던 것으로 기억합니다)

충돌할 대상을(Mask) 전부 해제해 주시면,

캐릭터가 부딪혔을 때 플랫폼이 반응하지 않게 되어 원하시는 결과물이 나오지 않을까 생각됩니다.

추가로 발판의 velocity 는 중력을 받아 점차 빨리 떨어져야 하기 때문에(중력가속도)

velocity.y += 800 * delta

처럼 구현하시는 것이 좀 더 자연스러울 것 같습니다.

 

또한, CharacterBody2D 는 보통 캐릭터(사용자나, 다른 온라인 캐릭터)를 만들 때 사용하는 노드이기 때문에,

위처럼 발판을 만들 때는 RigidBody2D를 활용하시는 게 조금 더 자연스러울 수 있습니다.

다만, 위처럼 CharacterBody2D 를 활용하신 방법도 충분히 창의적이고 괜찮은 구현입니다.

 

또 궁금하신점 있으시다면 언제든지 질문 남겨주세요.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.
김민석 님의 문제를 해결하는 데 도움을 드릴게요.

타이머가 의도한 대로 작동하지 않는 경우, 주로 코드에서 타이머의 설정 및 사용 방법에 문제가 있을 수 있습니다.
GDScript에서 타이머를 사용하는 일반적인 과정은 다음과 같습니다:

  1. 타이머 노드 설정:

    • Scene에 Timer 노드를 추가합니다.
    • Wait Time을 1초로 설정합니다.
    • One Shottrue로 설정하여 타이머가 한 번만 실행되도록 설정합니다.
  2. 타이머 실행 및 신호 연결:

    • 특정 조건을 만족할 때 Timer 노드의 start() 메서드를 호출하여 타이머를 시작합니다.
    • 타이머 노드의 timeout 신호를 사용할 수 있도록 연결합니다.
  3. 코드 예:

    # 타이머 노드를 변수에 연결
    var timer = $Timer
    
    # 플레이어가 플랫폼 위에 있을 때
    func _on_Player_body_entered(body):
        if body.name == "Player":
            timer.start()  # 타이머 시작
    
    # 타이머 완료 후 호출되는 함수
    func _on_Timer_timeout():
        # 장애물이 떨어지는 동작을 구현
    

위 코드를 참고하여, timeout 신호에 연결된 함수에서 장애물이 실제로 떨어지는 동작을 구현하지 않았거나 타이머 설정이 맞지 않다면 수정해보세요. 더 구체적인 코드나 설정이 필요하시면 알려주세요.

추가적으로 궁금한 사항이 있으시면 언제든지 문의하기 페이지에서 질문해 주세요. 최선을 다해 도와드리겠습니다.
이미지 출처: Godot Engine Interface
출처 URL: 인프런 FAQ

Hình ảnh hồ sơ của 520alstjr
520alstjr

câu hỏi đã được viết

Đặt câu hỏi