mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-10 22:25:55 +00:00
3D Boss scripts implementation
This commit is contained in:
parent
b0d0161ab0
commit
dbf7f1a963
29 changed files with 1805 additions and 1188 deletions
|
|
@ -3,6 +3,7 @@ using System.Linq;
|
|||
using Cirno.Scripts.Components;
|
||||
using Cirno.Scripts.Controllers;
|
||||
using Cirno.Scripts.Resources;
|
||||
using Cirno.Scripts.Utils;
|
||||
using Godot;
|
||||
|
||||
namespace Cirno.Scripts.Weapons;
|
||||
|
|
@ -31,6 +32,8 @@ public partial class Bullet3D : Area3D, IBullet
|
|||
public bool IsFrozen { get; private set; } = false;
|
||||
public bool Enabled { get; private set; } = false;
|
||||
|
||||
public float SpriteRotation { get; private set; } = 0f;
|
||||
|
||||
[Signal]
|
||||
public delegate void OnDestroyEventHandler();
|
||||
|
||||
|
|
@ -120,26 +123,26 @@ public partial class Bullet3D : Area3D, IBullet
|
|||
|
||||
private void ApplyTimeModifiers(double delta)
|
||||
{
|
||||
return;
|
||||
// foreach (var modifier in _modifiers)
|
||||
// {
|
||||
// if (_elapsedTime >= modifier.TimeModifier.TimeInSeconds)
|
||||
// {
|
||||
// if (!modifier.Applied)
|
||||
// {
|
||||
// modifier.Applied = true;
|
||||
// modifier.TimeModifier.Start(this);
|
||||
// modifier.Elapsed = 0;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// modifier.Elapsed += delta;
|
||||
// }
|
||||
//
|
||||
// modifier.TimeModifier.Update(this, delta, modifier.Elapsed);
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
foreach (var modifier in _modifiers)
|
||||
{
|
||||
if (_elapsedTime >= modifier.TimeModifier.TimeInSeconds)
|
||||
{
|
||||
if (!modifier.Applied)
|
||||
{
|
||||
modifier.Applied = true;
|
||||
modifier.TimeModifier.Start(this);
|
||||
modifier.Elapsed = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
modifier.Elapsed += delta;
|
||||
}
|
||||
|
||||
modifier.TimeModifier.Update(this, delta, modifier.Elapsed);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void RotateBullet(float degrees)
|
||||
|
|
@ -148,29 +151,43 @@ public partial class Bullet3D : Area3D, IBullet
|
|||
_direction = _direction.Rotated(radians).Normalized(); // Rotate direction
|
||||
|
||||
if (!BulletInfo.Attributes.HasFlag(BulletFlags.Rotateable)) return;
|
||||
RotateSprite(SpriteRotation + radians);
|
||||
//SetRotation(Rotation + radians);
|
||||
}
|
||||
|
||||
public virtual void RotateSpriteDegrees(float degrees)
|
||||
{
|
||||
if (!BulletInfo.Attributes.HasFlag(BulletFlags.Rotateable)) return;
|
||||
|
||||
SpriteRotation = Mathf.DegToRad(Mathf.RadToDeg(SpriteRotation) + degrees);
|
||||
|
||||
//SetRotationDegrees(RotationDegrees + degrees);
|
||||
}
|
||||
|
||||
public virtual void RotateSprite(float radians)
|
||||
{
|
||||
if (!BulletInfo.Attributes.HasFlag(BulletFlags.Rotateable)) return;
|
||||
SpriteRotation += radians;
|
||||
|
||||
Vector3 axis = Basis.FromEuler(new Vector3(
|
||||
Mathf.DegToRad(-45f),
|
||||
Mathf.DegToRad(45f),
|
||||
0f
|
||||
)).Z;
|
||||
|
||||
Rotate(axis, radians);
|
||||
|
||||
//SetRotation(Rotation + radians);
|
||||
}
|
||||
|
||||
public void FacePlayer()
|
||||
{
|
||||
// if (_gameManager.Player != null)
|
||||
// {
|
||||
// //_direction = (_gameManager.PlayerPosition.Value - this.GlobalPosition).Normalized();
|
||||
// RotateBullet(0); // quick hack to rotate lasers
|
||||
// //LookAt(player.GlobalPosition);
|
||||
// }
|
||||
if (GameController.Instance.PlayerPosition.HasValue)
|
||||
{
|
||||
_direction = (GameController.Instance.PlayerPosition.Value.ToVector2() - this.GlobalPosition.ToVector2()).Normalized();
|
||||
RotateBullet(0); // quick hack to rotate lasers
|
||||
//LookAt(player.GlobalPosition);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue