From 19aaffbeab4fb1e90b4f04dd96a852484eee06f3 Mon Sep 17 00:00:00 2001 From: HumanoidSandvichDispenser Date: Fri, 25 Nov 2022 11:07:23 -0800 Subject: [PATCH] player camera --- Utils/PlayerCamera.cs | 46 +++++++++++++++++++++++++++++++++++++++++ Utils/PlayerCamera.tscn | 10 +++++++++ 2 files changed, 56 insertions(+) create mode 100644 Utils/PlayerCamera.cs create mode 100644 Utils/PlayerCamera.tscn diff --git a/Utils/PlayerCamera.cs b/Utils/PlayerCamera.cs new file mode 100644 index 0000000..21a52f6 --- /dev/null +++ b/Utils/PlayerCamera.cs @@ -0,0 +1,46 @@ +using Godot; +using System; + +namespace SupaLidlGame.Utils +{ + public partial class PlayerCamera : Camera2D + { + protected float _intensity; + + protected double _timeLeft; + + public override void _Ready() + { + + } + + public override void _Process(double delta) + { + if (_timeLeft > 0) + { + _timeLeft -= delta; + Offset = RandomOffset(_intensity); + } + + if (_intensity > 0) + { + _intensity = Mathf.MoveToward(_intensity, 0.0f, (float)delta); + } + } + + public void Shake(float intensity, double time) + { + _intensity += intensity; + _timeLeft += time; + } + + private Vector2 RandomOffset(float intensity) + { + Vector2 ret = Vector2.Zero; + var rng = new RandomNumberGenerator(); + ret.x = (rng.Randf() * 2 - 0.5f) * intensity; + ret.y = (rng.Randf() * 2 - 0.5f) * intensity; + return ret; + } + } +} diff --git a/Utils/PlayerCamera.tscn b/Utils/PlayerCamera.tscn new file mode 100644 index 0000000..d468774 --- /dev/null +++ b/Utils/PlayerCamera.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://cl56eadpklnbo"] + +[ext_resource type="Script" path="res://Utils/PlayerCamera.cs" id="1_jabhk"] + +[node name="Camera2D" type="Camera2D"] +current = true +zoom = Vector2(4, 4) +script = ExtResource("1_jabhk") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."]