본문 바로가기

Programming

Godot(고닷), MoveToward 함수와 유도탄 구현(guided missile)

Node2D

Node2D 의 위치값을 지정하는 position vector2d 값은 move_toward 함수를 이용하여 자연스럽게 목적위치로 Node2D 오브젝트를 위치 시킬 수 있습니다.
The position vector2d value, which specifies the position value of Node2D, can be used to naturally position the Node2D object to the target position using the move_toward function.

목차
1. move_toward 파라메터
2. move_toward 사용법
3. 동적으로 목적지를 변경하는 로직
4. 유도탄
5. 구현로직

----

----

move_toward 파라메터

move_toward는 목적하는 위치와 delta 값을 파라메터로 받습니다.
move_toward receives the target position and delta value as parameters.

move_toward 사용방법

시간의 변화나 비율의 변화등으로 delta 값을 증가시키거나 감소시켜 결과값을 리턴 받을 수 있습니다. 가장 흔한 방법으로 func _process(delta): 함수 안에 node2d.position = node2d.position.move_toward(destPosition, delta * speed)를 구현하는 것입니다. speed 값을 변경하여 이동속도를 조절할 수 있습니다.
The result can be returned by increasing or decreasing the delta value due to changes in time or ratio. The most common way is to implement node2d.position = node2d.position.move_toward(destPosition, delta * speed) in the func _process(delta): function. You can adjust the moving speed by changing the speed value.

동적으로 목적지를 변경하는 로직

destPosition을 동적으로 변경하여 사용할 수도 있습니다. 만약 유도탄같이 계속해서 위치가 변경되는 타겟을 쫒을 때 사용할 수 있습니다.
You can also change destPosition dynamically. It can be used when chasing a target whose location is constantly changing, such as a guided missile.

유도탄

missile 이란 Node2D 오브젝트와 airCraft 란 Node2D 오브젝트가 있고, missile은 airCraft를 쫒는 유도탄이라고 할 때 missile은 airCraft의 위치를 갱신받을 수 있는 함수를 넘겨받아 위치를 갱신합니다.
There is a Node2D object called missile and a Node2D object called airCraft, and when the missile is a guided missile that chases the airCraft, the missile updates the position by taking over a function that can update the position of the airCraft.

구현로직

[airCraft.gd]
func airCraftPosition ():
return self.position

[missile.gd]
var targetPosition:FuncRef
func fireMissile(_targetPosition:FuncRef):
targetPosition = _targetPosition

func _process (delta):
if targetPosition == null: return
self.position.move_toward(targetPosition.call_func(), delta*speed)

[missileShotter.gd](http://missileshotter.gd/)
var airC:airCraft = airCraft.new()
var mis:missile = missile.new()

func fire ():
mis.fireMissile(funcref(airC,"airCraftPosition"))

위와 같이 작성하면 missile은 airCraft의 현재 위치를 계속해서 갱신받아서 이동하게 됩니다.
If written as above, the missile will continuously update the current location of the airCraft and move.

 

Godot(고닷), Scene change, reload etc with Unity

목차 1. 씬 전환 (scene change) 2. 씬 다시 호출 (reload scene) 3. 앱 종료 (app quit) ---- ---- Scene change get_tree().change_scene("res://scene.tscn") [ in Unity ] SceneManager.LoadScene("sceneName"); reload scene get_tree().reload_current_sce

moblieandlife.tistory.com

 

Godot(고닷), error Parent node is busy setting up children (addchild)

call_deferred addchild 는 _ready() 함수가 호출된 후에 호출되어야 한다고 한다. 그러나 _ready() 함수안에서 addchild를 사용하고 싶다면, call_deferred()를 이용하여 addchild를 사용할 수 있다. (It is said that addch

moblieandlife.tistory.com

 

Godot - Target Sdk 33

Godot 프로젝트의 안드로이드 Target Sdk 를 33으로 승급시키는 과정에서 발생한 시행 착오를 정리해 본다 ---- ---- 1. JDK android 폴더의 config.gradle 을 확인 해 보면 java 의 버전이 나오니 해당하는 jdk를

moblieandlife.tistory.com

 

godot - Label click event

---- ----

moblieandlife.tistory.com

 

Godot - 고닷을 이용한 json 데이터 컨버팅 ( godot json to object )

개발환경 : MAC 버전 : godot 3.3.2 ---- ---- 코딩을 하다보면 반드시 마주치는 과정 중의 하나인 json 데이터를 오브젝트 형식으로 변경하기 입니다. 특히 서버 데이터를 json 형식으로 받았을 때 주로

moblieandlife.tistory.com