revolver casings now spawn with animation rotation
This commit is contained in:
@@ -16,16 +16,6 @@ func _ready():
|
|||||||
level_control.particle_number += 1
|
level_control.particle_number += 1
|
||||||
particle_number = level_control.particle_number
|
particle_number = level_control.particle_number
|
||||||
|
|
||||||
if random_rotation == true:
|
|
||||||
var lv_x = rng.randf_range(5.0,7.0)
|
|
||||||
var lv_y = rng.randf_range(0.0,3.0)
|
|
||||||
var lv_z = rng.randf_range(0.0,2.0)
|
|
||||||
var av_x = rng.randf_range(-50.0,50.0)
|
|
||||||
var av_y = rng.randf_range(-50.0,50.0)
|
|
||||||
var av_z = rng.randf_range(-50.0,50.0)
|
|
||||||
|
|
||||||
linear_velocity += transform.basis * Vector3(lv_x, lv_y, lv_z) + player_velocity
|
|
||||||
angular_velocity += transform.basis * Vector3(av_x,av_y,av_z)
|
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
|||||||
@@ -1135,10 +1135,16 @@ tracks/3/path = NodePath(".")
|
|||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
"times": PackedFloat32Array(0.31, 1.4),
|
"times": PackedFloat32Array(0.22, 0.29, 0.31, 1.4),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
"values": [{
|
"values": [{
|
||||||
"args": [],
|
"args": [],
|
||||||
|
"method": &"mark_anim_rot"
|
||||||
|
}, {
|
||||||
|
"args": [],
|
||||||
|
"method": &"mark_anim_rot"
|
||||||
|
}, {
|
||||||
|
"args": [],
|
||||||
"method": &"spawn_revolver_casings"
|
"method": &"spawn_revolver_casings"
|
||||||
}, {
|
}, {
|
||||||
"args": [],
|
"args": [],
|
||||||
@@ -1356,11 +1362,12 @@ _data = {
|
|||||||
&"swap_out": SubResource("Animation_nvmxj")
|
&"swap_out": SubResource("Animation_nvmxj")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "chamber")]
|
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "anim_rot_body", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "chamber")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
||||||
script = ExtResource("2_boy4r")
|
script = ExtResource("2_boy4r")
|
||||||
weapon_info = ExtResource("3_oxh61")
|
weapon_info = ExtResource("3_oxh61")
|
||||||
anim_player = NodePath("AnimationPlayer")
|
anim_player = NodePath("AnimationPlayer")
|
||||||
|
anim_rot_body = NodePath("revolver1")
|
||||||
barrel_ray = NodePath("revolver1/RayCastBarrel")
|
barrel_ray = NodePath("revolver1/RayCastBarrel")
|
||||||
audio_fire = NodePath("Audio/Fire")
|
audio_fire = NodePath("Audio/Fire")
|
||||||
audio_empty = NodePath("Audio/Empty")
|
audio_empty = NodePath("Audio/Empty")
|
||||||
|
|||||||
@@ -166,17 +166,21 @@ func spawn_mag():
|
|||||||
|
|
||||||
instance_mag.position = mag_ejector.global_position
|
instance_mag.position = mag_ejector.global_position
|
||||||
instance_mag.transform.basis = mag_ejector.global_transform.basis
|
instance_mag.transform.basis = mag_ejector.global_transform.basis
|
||||||
instance_mag.linear_velocity += transform.basis * anim_velocity["lv"] * 5
|
instance_mag.linear_velocity += global_transform.basis * (anim_velocity["lv"] * 5) + player.velocity
|
||||||
instance_mag.angular_velocity += transform.basis * anim_velocity["av"]
|
instance_mag.angular_velocity += global_transform.basis * anim_velocity["av"]
|
||||||
get_tree().get_root().add_child(instance_mag)
|
get_tree().get_root().add_child(instance_mag)
|
||||||
|
|
||||||
func spawn_casing():
|
func spawn_casing():
|
||||||
if weapon_info.casing != null and casing_ejector != null:
|
if weapon_info.casing != null and casing_ejector != null:
|
||||||
# Casing transform
|
# Casing transform
|
||||||
var instance_casing = weapon_info.casing.instantiate()
|
var instance_casing = weapon_info.casing.instantiate()
|
||||||
|
|
||||||
|
var casing_random_velocity = random_rotation(true)
|
||||||
|
|
||||||
instance_casing.position = casing_ejector.global_position
|
instance_casing.position = casing_ejector.global_position
|
||||||
instance_casing.transform.basis = casing_ejector.global_transform.basis
|
instance_casing.transform.basis = casing_ejector.transform.basis
|
||||||
instance_casing.player_velocity = player.velocity * transform.basis
|
instance_casing.linear_velocity += global_transform.basis * casing_random_velocity["lv"] + player.velocity
|
||||||
|
instance_casing.angular_velocity += global_transform.basis * casing_random_velocity["av"]
|
||||||
get_tree().get_root().add_child(instance_casing)
|
get_tree().get_root().add_child(instance_casing)
|
||||||
|
|
||||||
func ready_revolver_casings():
|
func ready_revolver_casings():
|
||||||
@@ -197,13 +201,15 @@ func spawn_revolver_casings():
|
|||||||
bullet_array[index].visible = false
|
bullet_array[index].visible = false
|
||||||
if index < casing_array.size():
|
if index < casing_array.size():
|
||||||
casing_array[index].visible = false
|
casing_array[index].visible = false
|
||||||
|
|
||||||
var instance_casing = weapon_info.casing.instantiate()
|
var instance_casing = weapon_info.casing.instantiate()
|
||||||
|
var random_velocity = random_rotation(true)
|
||||||
|
var anim_velocity = solve_anim_av_lv()
|
||||||
instance_casing.position = casing_array[index].global_position
|
instance_casing.position = casing_array[index].global_position
|
||||||
instance_casing.random_rotation = false
|
|
||||||
instance_casing.transform.basis = casing_array[index].global_transform.basis
|
instance_casing.transform.basis = casing_array[index].global_transform.basis
|
||||||
instance_casing.player_velocity = player.velocity * transform.basis
|
instance_casing.rotation.x += deg_to_rad(90) # casings were initially rotated with the assumption that they would spawn horizontally, realigning for revolvers
|
||||||
instance_casing.rotation.x += deg_to_rad(90)
|
instance_casing.linear_velocity += transform.basis * (player.velocity + anim_velocity["lv"] + Vector3(0,random_velocity["lv"].y,0))
|
||||||
instance_casing.linear_velocity.y = -(8 + randf_range(0,3))
|
instance_casing.angular_velocity += transform.basis * anim_velocity["av"]
|
||||||
get_tree().get_root().add_child(instance_casing)
|
get_tree().get_root().add_child(instance_casing)
|
||||||
|
|
||||||
index += 1
|
index += 1
|
||||||
@@ -300,6 +306,18 @@ func bullet_fire():
|
|||||||
SignalBus.emit_signal("shot_fired")
|
SignalBus.emit_signal("shot_fired")
|
||||||
|
|
||||||
|
|
||||||
|
func random_rotation(random_rotation):
|
||||||
|
if random_rotation:
|
||||||
|
var lv_x = randf_range(5.0,7.0)
|
||||||
|
var lv_y = randf_range(0.0,3.0)
|
||||||
|
var lv_z = randf_range(0.0,2.0)
|
||||||
|
var av_x = randf_range(-50.0,50.0)
|
||||||
|
var av_y = randf_range(-50.0,50.0)
|
||||||
|
var av_z = randf_range(-50.0,50.0)
|
||||||
|
return {"av" : Vector3(av_x,av_y,av_z),"lv" : Vector3(lv_x,lv_y,lv_z)}
|
||||||
|
else:
|
||||||
|
return {"av" : Vector3.ZERO,"lv" : Vector3.ZERO}
|
||||||
|
|
||||||
func mark_anim_rot():
|
func mark_anim_rot():
|
||||||
if anim_rot_body != null:
|
if anim_rot_body != null:
|
||||||
if spawn_av_lv.size() < 2:
|
if spawn_av_lv.size() < 2:
|
||||||
@@ -311,18 +329,12 @@ func mark_anim_rot():
|
|||||||
|
|
||||||
func solve_anim_av_lv():
|
func solve_anim_av_lv():
|
||||||
if spawn_av_lv.size() >= 2:
|
if spawn_av_lv.size() >= 2:
|
||||||
print("SPAWN_AV_LV : ",spawn_av_lv)
|
|
||||||
var start = spawn_av_lv[0]
|
var start = spawn_av_lv[0]
|
||||||
var end = spawn_av_lv[1]
|
var end = spawn_av_lv[1]
|
||||||
|
|
||||||
var calculated_av = (end["rot"] - start["rot"]) / (end["time"] - start["time"])
|
var calculated_av = (end["rot"] - start["rot"]) / (end["time"] - start["time"])
|
||||||
var calculated_lv = (end["pos"] - start["pos"]) / (end["time"] - start["time"])
|
var calculated_lv = (end["pos"] - start["pos"]) / (end["time"] - start["time"])
|
||||||
|
|
||||||
#clear array
|
|
||||||
#spawn_av_lv = []
|
|
||||||
|
|
||||||
print("CALCULATED AV: ",calculated_av, " - CALCULATED LV",calculated_lv)
|
|
||||||
|
|
||||||
return {"av" : calculated_av,"lv" : calculated_lv}
|
return {"av" : calculated_av,"lv" : calculated_lv}
|
||||||
else:
|
else:
|
||||||
return {"av" : Vector3.ZERO,"lv" : Vector3.ZERO}
|
return {"av" : Vector3.ZERO,"lv" : Vector3.ZERO}
|
||||||
|
|||||||
Reference in New Issue
Block a user