본문 바로가기

Programming/Godot

고도엔진 2D 슈팅게임 - 4 Laser발사

반응형

<플레어>

- Flare 씬 생성

- sprite 노드 생성 후 이름을 flare로 변경

- flare 첫번째 이미지를 지정해줌

- 애니메이션 노드 추가 후 이름을 anim으로 변경, fade_out 애니메이션 추가

- 0초에서 flare 스프라이트의 Opacity 1로 하여 키를 추가 (Modulate의 Opacity속성을 255)

- 0.1초에서 Opacity 0으로 하여 키를 추가 (Modulate의 Opacity속성을 0)

- length를 0.1초로 변경

- flare sprite노드에 스크립트 추가(flare.gd)

 

 

<flare.gd>

시그널 "finished"은 "animation_finished"로 변경

 

<레이저>

- Laser 씬 생성(enemy용, player용 공통), Area2D 노드를 추가 후 laser로 변경

- Sprite, CollisionShape2D, VisibilityNotifier2D 노드를 추가하고, 아래와 같이 이름을 변경해준다.

- 세부 설정은 추후 상속 노드에서 할 예정이므로 더이상의 설정은 진행하지 않는다.

- laser노드에 스크립트 추가

extends Area2D

export var velocity = Vector2()
const scn_flare = preload("res://scenes/flare.tscn")

func _ready():
	set_process(true)
	create_flare()
    
	yield(get_node("vis_notifier"), "screen_exited")
	queue_free()
	pass
    
func _process(delta):
	translate(velocity * delta)
	pass
    
func create_flare():
	var flare = scn_flare.instance()
	flare.set_global_position(get_global_position())
	utils.main_node.add_child(flare)
	pass

 

- 상속으로 Player의 laser씬 만들기

- laser_ship.tscn으로 저장

- sprite에는 laser_ship.png 지정

- shape에는 rectangle, extends (3,6)

- vis_notifier에는 Rect w:6, h:12, x:-3, y:-6 으로 설정

- y속도: 350으로 설정

- laser_ship노드를 화면 중앙에 놓고 잘 실행되는지 확인

- Debugger > Remote Inspector에 보면 해당 노드가 사라졌음을 확인할 수 있다.

- 확인 후 원점으로 되돌려놓는다.

 

<Ship에 레이저 발사 구현하기>

- ship 노드를 불러와서 하위에 Node2D (cannons로 변경) 추가

- cannons노드 하위에 position2D(left로 변경) 추가

- cannons > Node2D > Transform > Pos에 (-12, -8) 입력하여 위치 수정

- left를 복사하여 right노드로 변경

- Pos값을 (12, -8)로 변경

- ship.gd 수정

반응형