1305 shaares
176 private links
176 private links
using Godot;
using System;
public class FirstPerson : Spatial
{
private Camera camera;
private RayCast rayCast;
private float shootTimer = 0;
private float shootInterval = 0.2f;
public override void _Ready()
{
camera = GetNode<Camera>("Camera");
rayCast = GetNode<RayCast>("RayCast");
}
public override void _Process(float delta)
{
float speed = 5f;
var input = new Vector3();
if (Input.IsActionPressed("move_forward"))
{
input.z -= 1;
}
if (Input.IsActionPressed("move_backward"))
{
input.z += 1;
}
if (Input.IsActionPressed("move_left"))
{
input.x -= 1;
}
if (Input.IsActionPressed("move_right"))
{
input.x += 1;
}
input = camera.GlobalTransform.basis.Xform(input).Normalized();
Translation += input * delta * speed;
var rotX = Input.GetMouseMotion().y;
var rotY = Input.GetMouseMotion().x;
Rotation = new Vector3(
Mathf.Clamp(Rotation.x + rotX, -89, 89),
Rotation.y + rotY,
0
);
camera.Rotation = Rotation;
// Shoot weapon
if (Input.IsActionPressed("shoot") && shootTimer >= shootInterval)
{
Shoot();
shootTimer = 0;
}
shootTimer += delta;
}
private void Shoot()
{
// Perform raycast to detect target
if (rayCast.IsColliding())
{
Node target = rayCast.GetCollider();
// Apply damage to target
if (target.HasMethod("ApplyDamage"))
{
target.Call("ApplyDamage", 10);
}
}
}
}
🐝 behaviour tree AI for Godot Engine. Contribute to bitbrain/beehave development by creating an account on GitHub.
Pepe Deluxe - Everybode Pass Me By