GodotComponentTest/entities/Player.cs

34 lines
955 B
C#
Raw Normal View History

2022-12-02 21:09:40 +01:00
using Godot;
using System;
public class Player : KinematicBody
{
2022-12-04 20:51:02 +01:00
private MovableComponent _movable;
private Spatial _geometry;
2022-12-02 21:09:40 +01:00
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
2022-12-04 21:54:44 +01:00
_movable = (MovableComponent)FindNode("Movable", false);
2022-12-04 20:51:02 +01:00
if (_movable != null)
{
_movable.Connect("PositionUpdated", this, nameof(OnPositionUpdated));
_movable.Connect("OrientationUpdated", this, nameof(OnOrientationUpdated));
2022-12-04 20:51:02 +01:00
}
_geometry = (Spatial)FindNode("Geometry", false);
2022-12-02 21:09:40 +01:00
}
2022-12-04 20:51:02 +01:00
private void OnPositionUpdated(Vector3 newPosition)
{
Transform transform = Transform;
transform.origin = newPosition;
Transform = transform;
}
private void OnOrientationUpdated(float newOrientation)
{
_geometry.Transform = new Transform (new Quat(Vector3.Up, newOrientation), Vector3.Zero);
}
2022-12-02 21:09:40 +01:00
}