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.
'Programming' 카테고리의 다른 글
소스트리가 갑자기 실행되지 않을 때 (sourcetree not woring) (0) | 2024.04.26 |
---|---|
Godot(고닷), Scene change, reload etc with Unity (0) | 2024.03.17 |
Godot(고닷), error Parent node is busy setting up children (addchild) (0) | 2024.03.17 |
Godot - Target Sdk 33 (0) | 2024.01.14 |
godot - Label click event (0) | 2022.02.09 |