[GodotEngine] 3D 카메라와 카메라 금보

4047 단어 Godot Enginetech
Godot Engine 3.x에서 3D 플랫폼을 만들 때 매번 같은 일을 해서 기억하기 어려우니 필기를 해야 한다.

사진기


나는 카메라를 만들 때 항상 두 가지 방법으로 한다.
플레이어 장면에 포함된 방법과 플레이어가 카메라를 따로 준비하는 방법
전자는 카메라의 추적 처리를 고려하지 않기 때문에 표준적인 방법이다.
후자는 카메라 추적 처리가 필요하지만 카메라 아이템이 쉽게 움직이기 때문에 유니버설성이 높다고 느낀다.

카메라 벨



당분간, 어쨌든 제작CameraController의 부노드Spatial.
이 하위 노드h를 손 노드v로 설정하고 각각 Spatial 노드로 설정한다.
증손노드에서 CameraPos라는 이름으로 제작Position3D.
이렇게 하면 h 노드가 Y축을 회전하면 카메라가 역할의 주위를 회전합니다.
마찬가지로 v 노드를 X축으로 회전시키면 카메라는 캐릭터의 위아래로 회전한다.
카메라를 멀리 줌하려면 로컬 Z 좌표CameraPos를 이동하면 됩니다.
CameraController.gd
export var _distance:float = 3.0
export var _vertical_rotate:float = -20.0

onready var _camera_gimbal_h:Spatial = get_node("h")
onready var _camera_gimbal_v:Spatial = get_node("h/v")
onready var _camera_position:Spatial = get_node("h/v/CameraPos")

func _ready():
	_camera_pos_node.translation.z = distance
	_camera_gimbal_v.rotate_x(deg2rad(vertical_rotate))
축력기에 좋아하는 각도와 거리를 설정하면 게임이 시작될 때 그 값으로 시작한다.tool도 키워드Engine.editor_hint를 첨부하여 설정할 수 있다.
https://docs.godotengine.org/ja/stable/tutorials/plugins/running_code_in_the_editor.html
카메라가 들어오든 안 들어오든 노드의 좌표CameraPos를 보고 이동하면 된다._process(_delta)에서 움직이면 물리적 처리 측면(충돌 처리 등이 많은 등)에서 라그가 발생하면 카메라에 영향을 주고 화면 전체가 끊기기 때문에 분리하는 것이 좋다._physics_process(_delta)노드도 사용할 수 있습니다.
다만 개인적으로는SpringArm장애물을사용할 때캐릭터에 접근하는 행위보다는제작사의특허(2016년실효)를가진카메라와타겟사이의대상이반투명화되어서사용하지 않는다SpringArm.

좋은 웹페이지 즐겨찾기