Untitled

 avatar
unknown
plain_text
a month ago
2.2 kB
9
Indexable
using Godot;
using System;

public partial class Player : Area2D
{
	// Called when the node enters the scene tree for the first time.
    [Signal]
    public delegate void HitEventHandler();

	[Export]
	public int Speed {get; set; } = 400;

	public Vector2 screenSize;
	public override void _Ready()
    {
        screenSize = GetViewportRect().Size;
    }

	// Called every frame. 'delta' is the elapsed time since the previous frame.
	public override void _Process(double delta)

    
    {
        
		var velocity = Vector2.Zero;
		var animatedSprite2D = GetNode<AnimatedSprite2D>("AnimatedSprite2D");


		if (Input.IsActionPressed("move_right"))
        {
            velocity.X += 1;
        }
		if (Input.IsActionPressed("move_left"))
        {
            velocity.X -= 1;
        }
		if (Input.IsActionPressed("move_up"))
        {
            velocity.Y -= 1;
        }
		if (Input.IsActionPressed("move_down"))
        {
            velocity.Y += 1;
        }

       

		if (velocity.Length() > 0)
        {
            velocity = velocity.Normalized() * Speed;
            animatedSprite2D.Play();
        }
        else
        {
            animatedSprite2D.Stop();
        }
        
        Position += velocity * (float)delta;
        Position = new Vector2(
            x: Mathf.Clamp(Position.X, 0, screenSize.X),
            y: Mathf.Clamp(Position.Y, 0, screenSize.Y)
        );

		if (velocity.X != 0)
        {
            animatedSprite2D.Animation = "walk";
            animatedSprite2D.FlipV = false;
            animatedSprite2D.FlipH = velocity.X < 0;
        }
        else if (velocity.Y != 0)
        {
            animatedSprite2D.Animation = "up";
            animatedSprite2D.FlipV = velocity.Y > 0;
        }
    }


    private void OnBodyEntered(Node2D body)
    {
        Hide();
        EmitSignal(SignalName.Hit);

        GetNode<CollisionShape2D>("hitbox").SetDeferred(CollisionShape2D.PropertyName.Disabled, true);
    }

    public void Start(Vector2 position)
    {
        Position = position;
        Show();
        GetNode<CollisionShape2D>("hitbox").Disabled = false;

    }

}

Editor is loading...
Leave a Comment