fixed shotgun pellets
This commit is contained in:
@@ -298,8 +298,8 @@ tracks/3/keys = {
|
|||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_bsc1a"]
|
[sub_resource type="Animation" id="Animation_bsc1a"]
|
||||||
resource_name = "shoot"
|
resource_name = "shoot"
|
||||||
length = 0.1
|
length = 0.05
|
||||||
step = 0.01
|
step = 0.001
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
@@ -307,7 +307,7 @@ tracks/0/path = NodePath("gun:position")
|
|||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PackedFloat32Array(0, 0.03, 0.1),
|
"times": PackedFloat32Array(0, 0.016, 0.05),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, -0.000397999, 0), Vector3(0, 0.0908759, 0.176503), Vector3(0, -0.000397999, 0)]
|
"values": [Vector3(0, -0.000397999, 0), Vector3(0, 0.0908759, 0.176503), Vector3(0, -0.000397999, 0)]
|
||||||
@@ -319,7 +319,7 @@ tracks/1/path = NodePath("gun:rotation")
|
|||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0, 0.03, 0.1),
|
"times": PackedFloat32Array(0, 0.016, 0.05),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, -1.5708, 0), Vector3(-1.34655e-08, -1.5708, -0.313147), Vector3(0, -1.5708, 0)]
|
"values": [Vector3(0, -1.5708, 0), Vector3(-1.34655e-08, -1.5708, -0.313147), Vector3(0, -1.5708, 0)]
|
||||||
@@ -331,7 +331,7 @@ tracks/2/path = NodePath("gun/slide:position")
|
|||||||
tracks/2/interp = 2
|
tracks/2/interp = 2
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
"times": PackedFloat32Array(0, 0.04, 0.1),
|
"times": PackedFloat32Array(0, 0.026, 0.05),
|
||||||
"transitions": PackedFloat32Array(1, 1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 0, 0), Vector3(0.4, 0, 0), Vector3(0, 0, 0)]
|
"values": [Vector3(0, 0, 0), Vector3(0.4, 0, 0), Vector3(0, 0, 0)]
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ _data = {
|
|||||||
&"pellet_glow": SubResource("Animation_s2rms")
|
&"pellet_glow": SubResource("Animation_s2rms")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="ShotgunPellet" type="RigidBody3D" groups=["pellet", "spawned"]]
|
[node name="ShotgunPellet" type="RigidBody3D" node_paths=PackedStringArray("collision_shape", "mesh") groups=["pellet", "spawned"]]
|
||||||
collision_layer = 160
|
collision_layer = 160
|
||||||
collision_mask = 233
|
collision_mask = 233
|
||||||
mass = 0.01
|
mass = 0.01
|
||||||
@@ -36,7 +36,8 @@ continuous_cd = true
|
|||||||
contact_monitor = true
|
contact_monitor = true
|
||||||
max_contacts_reported = 1
|
max_contacts_reported = 1
|
||||||
script = ExtResource("1_1v1ju")
|
script = ExtResource("1_1v1ju")
|
||||||
max_bounces = 20
|
collision_shape = NodePath("CollisionShape3D")
|
||||||
|
mesh = NodePath("MeshInstance3D")
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
mesh = SubResource("SphereMesh_5okb1")
|
mesh = SubResource("SphereMesh_5okb1")
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,14 +1,15 @@
|
|||||||
extends Projectile
|
extends Projectile
|
||||||
|
|
||||||
@export var max_bounces : int = 10
|
@export var max_bounces : int = 10
|
||||||
|
@export var collision_shape: CollisionShape3D
|
||||||
|
@export var mesh: MeshInstance3D
|
||||||
|
|
||||||
@onready var collision_shape: CollisionShape3D = $CollisionShape3D
|
|
||||||
@onready var mesh: MeshInstance3D = $MeshInstance3D
|
|
||||||
@onready var material = mesh.get_surface_override_material(0)
|
@onready var material = mesh.get_surface_override_material(0)
|
||||||
|
|
||||||
var bounces = 0
|
var bounces = 0
|
||||||
var start_time
|
var start_time
|
||||||
var end_time
|
var end_time
|
||||||
|
var despawning = false
|
||||||
|
|
||||||
const EMISSION_MAX : float = 200
|
const EMISSION_MAX : float = 200
|
||||||
const EMISSION_LIFETIME : float = 1.75 #in seconds
|
const EMISSION_LIFETIME : float = 1.75 #in seconds
|
||||||
@@ -24,19 +25,15 @@ func _process(delta: float) -> void:
|
|||||||
var current_time = (Time.get_ticks_msec())/end_time
|
var current_time = (Time.get_ticks_msec())/end_time
|
||||||
material.emission_energy_multiplier = clamp(lerp(EMISSION_MAX,0.0,current_time),0,EMISSION_MAX)
|
material.emission_energy_multiplier = clamp(lerp(EMISSION_MAX,0.0,current_time),0,EMISSION_MAX)
|
||||||
|
|
||||||
|
if despawning:
|
||||||
func _on_body_entered(body: Node) -> void:
|
linear_velocity.y -= .1 * delta
|
||||||
bounces += 1
|
|
||||||
if bounces >= max_bounces:
|
|
||||||
despawn()
|
|
||||||
|
|
||||||
if linear_velocity.length() >= VELOCITY_REQUIRED_TO_HIT:
|
|
||||||
damage(body)
|
|
||||||
|
|
||||||
func despawn():
|
func despawn():
|
||||||
collision_shape.disabled = true
|
collision_shape.disabled = true
|
||||||
await get_tree().create_timer(1).timeout
|
gravity_scale = 0
|
||||||
self.queue_free()
|
despawning = true
|
||||||
|
await get_tree().create_timer(2).timeout
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
func _on_timer_timeout() -> void:
|
func _on_timer_timeout() -> void:
|
||||||
|
|||||||
Reference in New Issue
Block a user