using Godot;
using System;
public partial class vision : CharacterBody3D
{
// --- Variables de la souris et du regard ---
float lookAngle = 90.0f;
[Export]
float mouseSensitivity = 0.2f;
Vector2 mouseDelta = Vector2.Zero;
Camera3D camera;
// --- Variables du clavier ---
[Export]
float moveSpeed = 4.0f;
[Export]
float gravity = 10.0f;
[Export]
float jumpForce = 8.0f;
[Export]
float stamina=10.0f;
int sprint=2f;
// --- Fonctions de Godot ---
public override void _Ready()
{
base._Ready();
camera = GetNode<Camera3D>("Camera3D");
Input.MouseMode = Input.MouseModeEnum.Captured;
}
// Gestion des entrées souris
public override void _Input(InputEvent ev)
{
if (ev is InputEventMouseMotion eventMouse)
{
mouseDelta += eventMouse.Relative;
}
}
// Rotations de la caméra
public override void _Process(double delta)
{
camera.RotationDegrees -= new Vector3(mouseDelta.Y, 0, 0) * mouseSensitivity;
camera.RotationDegrees = new Vector3(Mathf.Clamp(camera.RotationDegrees.X, -lookAngle, lookAngle),
camera.RotationDegrees.Y,
camera.RotationDegrees.Z
);
RotationDegrees -= new Vector3(0, mouseDelta.X, 0) * mouseSensitivity;
mouseDelta = Vector2.Zero;
}
// Déplacements et physique
public override void _PhysicsProcess(double delta)
{
Vector3 velocity = Velocity;
// 1. Gravité
if (!IsOnFloor())
{
velocity.Y -= gravity * (float)delta;
}
// 2. Saut (avec votre action "ui_up")
if (Input.IsActionJustPressed("ui_accept") && IsOnFloor())
{
velocity.Y = jumpForce;
}
// 3. Direction (touches ZQSD ou flèches)
Vector2 direction = Vector2.Zero;
if (Input.IsActionPressed("forward") && IsOnFloor()) direction.Y -= 1;
if (Input.IsActionPressed("back") && IsOnFloor()) direction.Y += 1;
if (Input.IsActionPressed("left") && IsOnFloor()) direction.X -= 1;
if (Input.IsActionPressed("right") && IsOnFloor()) direction.X += 1;
direction = direction.Normalized();
// 4. Orientation
Vector3 forward = GlobalTransform.Basis.Z;
Vector3 right = GlobalTransform.Basis.X;
Vector3 moveDirection = (forward * direction.Y + right * direction.X).Normalized();
velocity.X = moveDirection.X * moveSpeed;
velocity.Z = moveDirection.Z * moveSpeed;
//sprint
if (Input.IsActionPressed("run") )
{
velocity.Z = moveDirection.X * moveSpeed*sprint
stamina-=(float)delta;
}
// 5. Application et mouvement
Velocity = velocity;
MoveAndSlide();
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: