Как переместить спрайт независимо от его родительского узла в Godot C#?C#

Место общения программистов C#
Anonymous
Как переместить спрайт независимо от его родительского узла в Godot C#?

Сообщение Anonymous »

Я пытаюсь заставить мой спрайт двигаться/вращаться независимо от его родительского узла, чтобы хитбокс не следовал за спрайтом. Я пытаюсь заставить спрайт плавно покачиваться из стороны в сторону во время движения игрока.
Я создал скрипт под названием BasicAnim.cs, который будет использоваться для всех движущихся персонажей. содержит функцию Animate(), которая вызывается всякий раз, когда персонаж движется. Чтобы добиться этого, я использовал метод Rotate(), но спрайт по-прежнему не раскачивается во время движения.
using Godot;
using System;

public partial class basicAnim : Node2D
{
public float yDisplacement = 10.0f;
public float tiltMagnitude = 5.0f;
public float ySpeed = 4.0f;
public float tiltSpeed = 2.0f;

private float yTime = 0.0f;
private float tiltTime = 0.0f;
private Godot.Vector2 originalPos;
private float originalTilt;

// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
originalPos = GlobalPosition;
originalTilt = RotationDegrees;
GD.Print("Original Position: ", originalPos);
GD.Print("Original Tilt: ", originalTilt);
}

public void Animate(double delta)
{
// Initialise original position and rotation

// Update times
yTime += (float)delta * ySpeed;
tiltTime += (float)delta * tiltSpeed;

// Apply Y displacement

// Apply leaning
float tiltValue = (originalTilt + (MathF.Sin(tiltTime) * tiltMagnitude)); //Calculate degrees to tilt by
tiltValue = (float)(3.14 / 180.0) * tiltValue; //Convert to radians
Rotate(tiltValue);
GD.Print(RotationDegrees , " : " , (originalTilt + Mathf.Sin(tiltTime) * tiltMagnitude));
}

// Allow reset of animation when player idle
public void ResetAnimation()
{
yTime = 0.0f;
tiltTime = 0.0f;
GlobalPosition = originalPos;
RotationDegrees = originalTilt;
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... in-godot-c

Вернуться в «C#»