Fix tween movement

This commit is contained in:
Marco 2025-03-05 15:38:52 +01:00
commit 3019bbb88e
6 changed files with 90 additions and 24 deletions

View file

@ -1,5 +1,10 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using Godot;
using GTweens.Builders;
using GTweens.Easings;
using GTweens.Tweens;
using GTweensGodot.Extensions;
namespace Cirno.Scripts.Activables;
@ -18,7 +23,9 @@ public partial class PlayerMover : ChainActivable
public Tween.EaseType EaseType = Tween.EaseType.InOut;
[Export]
public Tween.TransitionType TransitionType = Tween.TransitionType.Linear;
public Tween.TransitionType TransitionType { get; private set; } = Tween.TransitionType.Linear;
[Export] public GTweens.Easings.Easing GTweenEasing { get; private set; } = Easing.Linear;
public override void _Ready()
{
@ -38,14 +45,25 @@ public partial class PlayerMover : ChainActivable
{
//_gameManager.Player.RequestMovementDisable(true);
_gameManager.Player.SetState(PlayerState.Cutscene);
Tween tween = GetTree().CreateTween();
tween.SetEase(EaseType);
tween.SetTrans(TransitionType);
tween.TweenProperty(_gameManager.Player, "global_position", _gameManager.Player.GlobalPosition + RelativeTargetPosition, MovementTime);
// Wait for the tween to finish
await ToSignal(tween, "finished");
var gtween = GTweenSequenceBuilder.New()
.Append(_gameManager.Player.MainObject.TweenGlobalPosition(
_gameManager.Player.MainObject.GlobalPosition + RelativeTargetPosition, MovementTime)
.SetEasing(GTweenEasing)
//.
)
.Build();
await gtween.PlayAsync(CancellationToken.None);
// Tween tween = GetTree().CreateTween();
// tween.SetEase(EaseType);
// tween.SetTrans(TransitionType);
// tween.TweenProperty(_gameManager.Player, "global_position", _gameManager.Player.GlobalPosition + RelativeTargetPosition, MovementTime);
//
// // Wait for the tween to finish
// await ToSignal(tween, "finished");
//_gameManager.Player.RequestMovementDisable(false);
_gameManager.Player.SetState(PlayerState.Cutscene);

View file

@ -1,5 +1,9 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using Godot;
using GTweens.Builders;
using GTweens.Easings;
using GTweensGodot.Extensions;
namespace Cirno.Scripts.Resources.Events;
@ -18,6 +22,8 @@ public partial class MovePlayerEvent : EventResource
[Export]
public Tween.TransitionType TransitionType = Tween.TransitionType.Linear;
[Export] public GTweens.Easings.Easing GTweenEasing { get; private set; } = Easing.Linear;
private bool _isComplete = false;
private GameManager _gameManager;
@ -38,13 +44,23 @@ public partial class MovePlayerEvent : EventResource
GameManager.Instance.Player.SetState(PlayerState.Cutscene);
//_gameManager.Player.RequestMovementDisable(true);
Tween tween = _gameManager.GetTree().CreateTween();
tween.SetEase(EaseType);
tween.SetTrans(TransitionType);
tween.TweenProperty(_gameManager.Player, "global_position", _gameManager.Player.GlobalPosition + RelativeTargetPosition, MovementTime);
// Wait for the tween to finish
await ToSignal(tween, "finished");
var gtween = GTweenSequenceBuilder.New()
.Append(_gameManager.Player.MainObject.TweenGlobalPosition(
_gameManager.Player.MainObject.GlobalPosition + RelativeTargetPosition, MovementTime)
.SetEasing(GTweenEasing)
//.
)
.Build();
await gtween.PlayAsync(CancellationToken.None);
// Tween tween = _gameManager.GetTree().CreateTween();
// tween.SetEase(EaseType);
// tween.SetTrans(TransitionType);
// tween.TweenProperty(_gameManager.Player, "global_position", _gameManager.Player.GlobalPosition + RelativeTargetPosition, MovementTime);
//
// // Wait for the tween to finish
// await ToSignal(tween, "finished");
GameManager.Instance.Player.SetState(PlayerState.Active);
//_gameManager.Player.RequestMovementDisable(false);