mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-09 23:45:55 +00:00
Rotating 3D chairs
This commit is contained in:
parent
5c9f592cc3
commit
f7448eb3f5
5 changed files with 232 additions and 147 deletions
58
Scripts/Actors/3D/Chair3D.cs
Normal file
58
Scripts/Actors/3D/Chair3D.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
using System;
|
||||
using Cirno.Scripts.Enums;
|
||||
using Godot;
|
||||
|
||||
namespace Cirno.Scripts.Actors._3D;
|
||||
|
||||
[Tool]
|
||||
public partial class Chair3D : StaticBody3D
|
||||
{
|
||||
[Export]
|
||||
public Direction Direction { get; set; } = Direction.Down;
|
||||
private AnimatedSprite3D _animatedSprite;
|
||||
|
||||
[Export]
|
||||
public StringName SpinAnimationName = "Spin";
|
||||
|
||||
[Export] public float SpinTime { get; private set; } = 4f;
|
||||
|
||||
private double _timer = 0f;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_animatedSprite = GetNode<AnimatedSprite3D>("AnimatedSprite3D");
|
||||
|
||||
_animatedSprite.Play(Direction.ToString());
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (Engine.IsEditorHint()) return;
|
||||
|
||||
if (_animatedSprite.Animation != SpinAnimationName) return;
|
||||
_timer += delta;
|
||||
|
||||
if (_timer >= SpinTime)
|
||||
{
|
||||
_timer = 0;
|
||||
_animatedSprite.SpeedScale = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void OnBulletCollision(Area3D area)
|
||||
{
|
||||
_animatedSprite.SpeedScale = 1;
|
||||
_animatedSprite.Play("Spin");
|
||||
|
||||
_timer = 0;
|
||||
}
|
||||
|
||||
private Direction GetRandomDirection()
|
||||
{
|
||||
var directions = (Direction[])Enum.GetValues(typeof(Direction));
|
||||
|
||||
//GD.RandRange(0, directions.Length -1);
|
||||
return directions[GD.RandRange(0, directions.Length - 1)];
|
||||
}
|
||||
}
|
||||
1
Scripts/Actors/3D/Chair3D.cs.uid
Normal file
1
Scripts/Actors/3D/Chair3D.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://46bleylruayt
|
||||
Loading…
Add table
Add a link
Reference in a new issue