Rotating 3D chairs

This commit is contained in:
Marco 2025-09-18 09:24:22 +02:00
commit f7448eb3f5
5 changed files with 232 additions and 147 deletions

View 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)];
}
}

View file

@ -0,0 +1 @@
uid://46bleylruayt