A Smoll game engine
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

36 行
1.5 KiB

using Smoll;
using Raylib_cs;
using System.Numerics;
using Smoll.Ex3;
namespace Smoll.Ex1
{
class ExampleInputComponent : Component {
InertiaComponent? transform;
public float speedPixelPerSecond;
public float angularSpeedTurnPerSecond;
public ExampleInputComponent(float speedPixelPerSecond, float angularSpeedTurnPerSecond) {
this.speedPixelPerSecond = speedPixelPerSecond;
this.angularSpeedTurnPerSecond = angularSpeedTurnPerSecond;
}
public override void OnAttached()
{
base.OnAttached();
transform = owner.GetComponent<InertiaComponent>();
}
public override void Update(float deltaTimeSeconds)
{
transform ??= owner.GetComponent<InertiaComponent>();
if(transform == null) throw new Exception("Example Input used on immovable object");
transform.transform.position -= Raylib.IsKeyDown(KeyboardKey.Up) * speedPixelPerSecond * deltaTimeSeconds * Complex.ImaginaryOne;
transform.transform.position += Raylib.IsKeyDown(KeyboardKey.Down) * speedPixelPerSecond * deltaTimeSeconds * Complex.ImaginaryOne;
transform.transform.position -= Raylib.IsKeyDown(KeyboardKey.Left) * speedPixelPerSecond * deltaTimeSeconds;
transform.transform.position += Raylib.IsKeyDown(KeyboardKey.Right) * speedPixelPerSecond * deltaTimeSeconds;
transform.transform.angle += Raylib.IsKeyDown(KeyboardKey.L) * angularSpeedTurnPerSecond * 2 * float.Pi * deltaTimeSeconds;
}
}
}