enhancing car behavior
This commit is contained in:
@@ -3,8 +3,9 @@ extends Node3D
|
||||
@export var left_pupil_path: NodePath = NodePath("Body/HeadPivot/EyeLeft/Pupil")
|
||||
@export var right_pupil_path: NodePath = NodePath("Body/HeadPivot/EyeRight/Pupil")
|
||||
@export var camera_path: NodePath
|
||||
@export var look_origin_path: NodePath = NodePath("Body/HeadPivot")
|
||||
@export var look_reference_path: NodePath = NodePath("Body")
|
||||
@export var look_origin_path: NodePath = NodePath("Body/HeadPivot")
|
||||
@export var look_reference_path: NodePath = NodePath("Body")
|
||||
@export var look_target_path: NodePath = NodePath("")
|
||||
@export var lock_vertical: bool = true
|
||||
@export var vertical_unlock_height: float = 0.6
|
||||
@export var vertical_lock_smooth_speed: float = 6.0
|
||||
@@ -28,10 +29,11 @@ var _head: Node3D
|
||||
var _head_base_rot: Vector3
|
||||
var _vertical_lock_factor: float = 1.0
|
||||
var _vertical_hold_timer: float = 0.0
|
||||
var _look_reference: Node3D
|
||||
var _look_reference: Node3D
|
||||
var _look_target: Node3D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
func _ready() -> void:
|
||||
_left_pupil = get_node_or_null(left_pupil_path) as Node3D
|
||||
_right_pupil = get_node_or_null(right_pupil_path) as Node3D
|
||||
if _left_pupil:
|
||||
@@ -39,9 +41,10 @@ func _ready() -> void:
|
||||
if _right_pupil:
|
||||
_right_base = _right_pupil.position
|
||||
_camera = _resolve_camera()
|
||||
_look_origin = get_node_or_null(look_origin_path) as Node3D
|
||||
_look_reference = get_node_or_null(look_reference_path) as Node3D
|
||||
_head = get_node_or_null(head_path) as Node3D
|
||||
_look_origin = get_node_or_null(look_origin_path) as Node3D
|
||||
_look_reference = get_node_or_null(look_reference_path) as Node3D
|
||||
_look_target = get_node_or_null(look_target_path) as Node3D
|
||||
_head = get_node_or_null(head_path) as Node3D
|
||||
if _head:
|
||||
_head_base_rot = _head.rotation
|
||||
|
||||
@@ -54,15 +57,21 @@ func _process(_delta: float) -> void:
|
||||
_update_pupils()
|
||||
|
||||
|
||||
func _update_pupils() -> void:
|
||||
if _camera == null or not _camera.is_inside_tree():
|
||||
_camera = _resolve_camera()
|
||||
if _camera == null:
|
||||
return
|
||||
var origin := _look_origin
|
||||
if origin == null:
|
||||
origin = self
|
||||
var target := _camera.global_position
|
||||
func _update_pupils() -> void:
|
||||
if _look_target == null and look_target_path != NodePath(""):
|
||||
_look_target = get_node_or_null(look_target_path) as Node3D
|
||||
if _look_target == null:
|
||||
var viewport_cam := get_viewport().get_camera_3d()
|
||||
if viewport_cam != null and viewport_cam != _camera:
|
||||
_camera = viewport_cam
|
||||
elif _camera == null or not _camera.is_inside_tree():
|
||||
_camera = _resolve_camera()
|
||||
if _look_target == null and _camera == null:
|
||||
return
|
||||
var origin := _look_origin
|
||||
if origin == null:
|
||||
origin = self
|
||||
var target := _look_target.global_position if _look_target != null else _camera.global_position
|
||||
var dir_world := target - origin.global_position
|
||||
if dir_world.length_squared() <= 0.0001:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user