You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
using Godot;
|
|
|
|
using System;
|
|
|
|
|
|
|
|
public partial class ActionCamera : Node3D
|
|
|
|
{
|
|
|
|
[Export]
|
|
|
|
public float Speed { get; set; } = 4;
|
|
|
|
private Vector3 _targetRotation = Vector3.Zero;
|
|
|
|
// Called when the node enters the scene tree for the first time.
|
|
|
|
public override void _Ready()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
|
|
public override void _Process(double delta)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void _PhysicsProcess(double delta)
|
|
|
|
{
|
|
|
|
if (Input.IsActionPressed("camera_up"))
|
|
|
|
{
|
|
|
|
_targetRotation.X -= Speed*(float)delta;
|
|
|
|
}
|
|
|
|
if (Input.IsActionPressed("camera_down"))
|
|
|
|
{
|
|
|
|
_targetRotation.X += Speed*(float)delta;
|
|
|
|
}
|
|
|
|
if (Input.IsActionPressed("camera_left"))
|
|
|
|
{
|
|
|
|
_targetRotation.Y += Speed*(float)delta;
|
|
|
|
}
|
|
|
|
if (Input.IsActionPressed("camera_right"))
|
|
|
|
{
|
|
|
|
_targetRotation.Y -= Speed*(float)delta;
|
|
|
|
}
|
|
|
|
if (_targetRotation.X>30*Mathf.Pi/180)
|
|
|
|
{
|
|
|
|
_targetRotation.X = 30*Mathf.Pi/180;
|
|
|
|
}
|
|
|
|
if (_targetRotation.X<-30*Mathf.Pi/180){
|
|
|
|
_targetRotation.X = -30*Mathf.Pi/180;
|
|
|
|
}
|
|
|
|
this.Rotation = this.Rotation.Lerp(_targetRotation,Speed*(float)delta) ;
|
|
|
|
}
|
|
|
|
}
|