1. 물리엔진
Area2D : 충돌 판정 확인
StaticBody2D : 충돌, 이동불가
CharacterBody2D : 충돌, 이동가능 (code)
RigidBody2D : 충돌, 이동가능 (physics)
collision shape가 있어야 사용가능
유니티에서의 rigidbody/collision 와 비슷한 개념인 것 같다.
move_and_slide() : velocity 기반으로 이동 구현함
2. Instatiate
extends Node2D
var coin_scene: PackedScene = load("res://tscn/coin.tscn")
func _on_timer_timeout() -> void:
var coin = coin_scene.instantiate()
$Coins.add_child(coin)
Timer Node를 이용한 Instantiate
coin_scene에 해당하는 값을 불러와서 특정 시간에 한번씩 instantiate한다.
3. Signal
# player.gd
signal laser
func _process(delta: float) -> void:
if Input.is_action_just_pressed("shoot") :
laser.emit()
#############################
# level.gd
func _on_player_laser() -> void:
print("shoot")
코드에서와 같이 서로다른 scene에 존재하는 함수에 접근을 하고 싶을때 사용하는 변수
해당 예시에서는 player코드에서 signal을 만들었고 level코드에서 _on_player_laser함수를 player가 주체로 실행함.
player가 shoot을 눌렀을 때, 외부에 있는 level 함수를 실행.
4. Global Position과 Position
if Input.is_action_just_pressed("shoot") :
laser.emit($Marker2D.global_position)
해당 코드에서 Marker2D node의 위치에서 생성되게 만드는 부분인데 position으로 설정할경우 player의 marker의 상대위치로만 계산하고 global_position으로 설정해야 절대 좌표기준으로 생성한다. 사용해 유의
'프로그래밍 > 게임개발' 카테고리의 다른 글
Godot Engine 사용기 3 (0) | 2024.11.09 |
---|---|
Godot Engine 사용기 1 (0) | 2024.11.08 |
4학년 1학기 플젝 리뷰[가상현실] (0) | 2023.06.25 |
캡스톤 게임개발 이야기 3(최종) (0) | 2023.06.25 |
캡스톤 게임개발 이야기 2 (0) | 2023.05.03 |