Godot Engine:可约束轴向的第三人称摄像机实现

代码
extends Camera

export var lock_x :bool = false
export var lock_y :bool = false
export var lock_z :bool = false
export(float,EXP,0.1,1.0,0.1) var smoothing : float = 0.5

var target:Spatial
var offset:Vector3

func _ready():
	add_to_group("camera")
	var players :Array = get_tree().get_nodes_in_group("player")
	if players != null && not players.empty():
		target = players[0]
		offset = get_global_transform().origin - target.get_global_transform().origin
	else:
		print("player not found in scene")


func _physics_process(delta):
	if target == null:
		print("target lost")
		return
	var cam:Vector3 = get_global_transform().origin
	var focus:Vector3 = target.get_global_transform().origin
	var tgt = focus + offset
	if lock_x:
		tgt.x = cam.x
	if lock_y:
		tgt.y = cam.y
	if lock_z:
		tgt.z = cam.z
	look_at_from_position(lerp(cam,tgt,smoothing),focus,Vector3.UP)

x/y/z轴都不锁定的效果

仅锁定z轴的效果

你可能感兴趣的:(Godot笔记,#,Godot,实践)