반응형
2 타입의 Enemy 생성
Area2D 노드를 추가하여 enemy로 변경
- colisionShape2D 추가 > RectangleShape2D > Extents (16,16) 설정
- enemy 스크립트 추가
- y 속도 100으로 설정
- 화면을 넘어가면 삭제되도록 수정
- 첫번째 enemy: enemy_kamikaze
- sprite에 enemy_kamikaze 이미지를 불러옴
- CollisionShape2D에서 Make Unique를 설정하고, 사이즈를 12,16으로 변경
- 속도를 350으로 설정
- enemy spawn
- 자주 사용하는 함수를 utils.gd로 묶어서 스크립트 수정
# script: utils
extends Node
var main_node setget , _get_main_node
var view_size setget , _get_view_size
var mouse_pos setget , _get_mouse_pos
func _ready():
pass
func create_timer(wait_time):
var timer = Timer.new()
timer.set_wait_time(wait_time)
timer.set_one_shot(true)
timer.connect("timeout", timer, "queue_free")
add_child(timer)
timer.start()
return timer
pass
func choose(choises):
randomize()
var rand_index = randi() % choises.size()
return choises[rand_index]
pass
func find_node(node):
return self.main_node.find_node(node)
pass
func attach(src_node, src_signal, trg_node, trg_func):
if typeof(src_node) == TYPE_STRING:
src_node = find_node(src_node)
if typeof(trg_node) == TYPE_STRING:
trg_node = find_node(trg_node)
if src_node != null and trg_node != null:
src_node.connect(src_signal, trg_node, trg_func)
pass
func remote_call(src_node, method, arg0 = null, arg1 = null):
src_node = find_node(src_node)
if src_node and src_node.has_method(method):
if arg0 and arg1:
return src_node.call(method, arg0, arg1)
if arg0:
return src_node.call(method, arg0)
return src_node.call(method)
pass
func _get_mouse_pos():
return get_viewport().get_mouse_pos()
pass
func _get_main_node():
var root = get_tree().get_root()
return root.get_child( root.get_child_count()-1 )
pass
func _get_view_size():
return get_tree().get_root().get_visible_rect().size
pass
- Project Settings > Autoload에 utils.gd 추가
- 수정된 함수 (계속 랜덤시기에 생성하는 부분 추가 while, yield)
- world씬에 추가
반응형
'Programming > Godot' 카테고리의 다른 글
고도엔진 2D 슈팅게임 - 5 Enemy생성2 (0) | 2022.01.06 |
---|---|
고도엔진 2D 슈팅게임 - 4 Laser발사 (0) | 2022.01.04 |
고도엔진 2D 슈팅게임 - 2 마우스 컨트롤과 배경 (0) | 2022.01.04 |
고도엔진 2D 슈팅게임 - 1 프로젝트 세팅과 Player (0) | 2022.01.03 |
Godot 시작하기#4 - HUD Scene 및 마무리 (0) | 2021.12.22 |