Link CAN hit

This commit is contained in:
2023-09-02 01:41:34 -07:00
parent 955f9d307c
commit de037da23b
7 changed files with 123 additions and 27 deletions

30
Scenes/TestBullet.tscn Normal file
View File

@@ -0,0 +1,30 @@
[gd_scene load_steps=5 format=3 uid="uid://si4byubqnng4"]
[ext_resource type="Script" path="res://Scripts/TestBullet.cs" id="1_cavby"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5vpcx"]
albedo_color = Color(0.584314, 0.0352941, 0.141176, 1)
[sub_resource type="SphereMesh" id="SphereMesh_wuk0e"]
material = SubResource("StandardMaterial3D_5vpcx")
[sub_resource type="SphereShape3D" id="SphereShape3D_rokeu"]
[node name="TestBullet" type="Node3D"]
script = ExtResource("1_cavby")
_projectileSpeed = 5.0
[node name="RigidBody3D" type="RigidBody3D" parent="."]
collision_layer = 0
gravity_scale = 0.0
continuous_cd = true
contact_monitor = true
[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
mesh = SubResource("SphereMesh_wuk0e")
skeleton = NodePath("../..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
shape = SubResource("SphereShape3D_rokeu")

View File

@@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://b38hcomu4tpm5"]
[gd_scene load_steps=5 format=3 uid="uid://b38hcomu4tpm5"]
[ext_resource type="Script" path="res://Scripts/TestCharacter.cs" id="1_hddqi"]
[ext_resource type="PackedScene" uid="uid://dtyujwnb6w3kv" path="res://Models/TestModels/link.gltf" id="1_rwdbt"]
[ext_resource type="PackedScene" uid="uid://si4byubqnng4" path="res://Scenes/TestBullet.tscn" id="3_ojvu2"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_fqik1"]
radius = 0.152487
@@ -10,6 +11,7 @@ height = 0.456443
[node name="Character" type="CharacterBody3D"]
script = ExtResource("1_hddqi")
_speed = 2.0
_attackPattern = ExtResource("3_ojvu2")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(0.999665, -0.0258978, -7.10543e-15, 0.0258978, 0.999665, 0, 0, 0, 1, 0, 0.19703, 0)
@@ -18,4 +20,4 @@ shape = SubResource("CapsuleShape3D_fqik1")
[node name="Pivot" type="Node3D" parent="."]
[node name="link" parent="Pivot" instance=ExtResource("1_rwdbt")]
transform = Transform3D(-10, 0, 8.74228e-07, 0, 10, 0, -8.74228e-07, 0, -10, 0, 0, 0)
transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0)

View File

@@ -19,9 +19,13 @@ shape = SubResource("BoxShape3D_dk0pn")
mesh = SubResource("BoxMesh_eaper")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.118128, 5.82113, -1.13346)
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.118128, 8.18686, -1.13346)
fov = 40.0
[node name="DebugCamera" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.821149, 0.570714, 0, -0.570714, 0.821149, -0.36148, 1.40359, 0.864433)
visible = false
[node name="Link" parent="." instance=ExtResource("1_fwf6c")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)

22
Scripts/Projectile.cs Normal file
View File

@@ -0,0 +1,22 @@
using Godot;
public partial class Projectile : Node3D
{
[Export]
public double Cooldown { get; protected set; }
[Export]
private float _projectileSpeed = 100f;
public override void _Ready()
{
Speed = _projectileSpeed;
}
public float Speed { get; private set; }
public void OnTimeToLiveTimeout()
{
QueueFree();
}
}

10
Scripts/TestBullet.cs Normal file
View File

@@ -0,0 +1,10 @@
using Godot;
public partial class TestBullet : Projectile
{
public override void _PhysicsProcess(double delta)
{
Translate(new Vector3(0, 0, Speed * -(float)delta));
}
}

View File

@@ -1,32 +1,46 @@
using Godot;
using System;
public partial class TestCharacter : CharacterBody3D
{
[Export]
private float _speed = 5.0f;
[Export]
private float _speed = 5.0f;
[Export]
private PackedScene _attackPattern;
public override void _PhysicsProcess(double delta)
{
Vector3 velocity = Velocity;
public override void _PhysicsProcess(double delta)
{
if (Input.IsActionJustPressed("p1_fire"))
Fire();
// Get the input direction and handle the movement/deceleration.
// As good practice, you should replace UI actions with custom gameplay actions.
Vector2 inputDir = Input.GetVector("p1_left", "p1_right", "p1_up", "p1_down");
Vector3 direction = (Transform.Basis * new Vector3(inputDir.X, 0, inputDir.Y)).Normalized();
if (direction != Vector3.Zero)
{
velocity.X = direction.X * _speed;
velocity.Z = direction.Z * _speed;
GetNode<Node3D>("Pivot").LookAt(Position + direction, Vector3.Up);
}
else
{
velocity.X = Mathf.MoveToward(Velocity.X, 0, _speed);
velocity.Z = Mathf.MoveToward(Velocity.Z, 0, _speed);
}
Velocity = CalculateCharacterMovement();
MoveAndSlide();
}
Velocity = velocity;
MoveAndSlide();
}
private Vector3 CalculateCharacterMovement()
{
var velocity = Velocity;
var inputDir = Input.GetVector("p1_left", "p1_right", "p1_up", "p1_down");
var direction = (Transform.Basis * new Vector3(inputDir.X, 0, inputDir.Y)).Normalized();
if (direction != Vector3.Zero)
{
velocity.X = direction.X * _speed;
velocity.Z = direction.Z * _speed;
GetNode<Node3D>("Pivot").LookAt(Position + -direction, Vector3.Up);
}
else
{
velocity.X = Mathf.MoveToward(Velocity.X, 0, _speed);
velocity.Z = Mathf.MoveToward(Velocity.Z, 0, _speed);
}
return velocity;
}
private async void Fire()
{
GD.Print("Shoot");
var projectile = _attackPattern.Instantiate<Projectile>();
projectile.Position = Position + new Vector3(0f, 0f, -0.2f);
GetParent().AddChild(projectile);
await ToSignal(GetTree().CreateTimer(projectile.Cooldown), "timeout");
}
}

View File

@@ -40,3 +40,17 @@ p1_down={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
]
}
p1_fire={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
p1_altfire={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
[physics]
common/physics_ticks_per_second=144