59 lines
1.0 KiB
C#
59 lines
1.0 KiB
C#
using Godot;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass]
|
|
public partial class Projectile:CharacterBody3D
|
|
{
|
|
[Export]
|
|
public float speed = 0;
|
|
|
|
[Export]
|
|
public bool disableOnCollision = false;
|
|
|
|
[Export]
|
|
public bool disabled = false;
|
|
|
|
[Export]
|
|
public Collider collider;
|
|
|
|
[Export]
|
|
public Action onCollision;
|
|
|
|
[Export]
|
|
public bool runInEditor = false;
|
|
|
|
|
|
public override void _PhysicsProcess( double delta )
|
|
{
|
|
if ( disabled || ( Engine.IsEditorHint() && ! runInEditor ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
var velocity = this.GlobalForward() * speed * (float)delta;
|
|
|
|
var collision = MoveAndCollide( velocity );
|
|
|
|
if ( collision == null )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( collider != null)
|
|
{
|
|
collider.TriggerOnCollisionEnter( this, collision );
|
|
}
|
|
|
|
Action.Trigger( onCollision );
|
|
|
|
if ( disableOnCollision )
|
|
{
|
|
disabled = true;
|
|
}
|
|
}
|
|
}
|
|
} |