Implemented weapon spread (and corrected nerror with jetpack threshold)

main
unfa 2021-09-25 20:51:20 +02:00
parent c342225cec
commit e67ab9131c
3 changed files with 25 additions and 5 deletions

View File

@ -85,7 +85,7 @@ var jetpack_thrust = 48 # force applied against gravity
var jetpack_tank = 0.5 # maximum fuel (jetpack use time
var jetpack_fuel = jetpack_tank # current fuel (use time) left
var jetpack_recharge = 0.25 # how long to recharge to full
var jetpack_min = 1/4
var jetpack_min = 1.0/8
var jetpack_was_active = false
var velocity := Vector3.ZERO
@ -223,6 +223,8 @@ func _process(delta):
hud.get_node("Stats").get_node("JetpackBar").value = (jetpack_fuel / jetpack_tank) * 100
# weapon spread
weapon.spread = max(lerp(weapon.spread, weapon.spread_min, weapon.spread_lerp), weapon.spread_min)
func damage(hp: int):
var target = main.player_list.players[self.get_multiplayer_authority()]
@ -260,7 +262,6 @@ func update_color(color) -> void: #change player's wolrldmodel color
mesh.set_surface_override_material(0, player_material)
func _physics_process(delta):
if dead: # workaround for Godot player destruction crash
linear_velocity = Vector3.ZERO
return

View File

@ -14,6 +14,13 @@ var tracer = preload("res://Assets/Effects/BulletTracer.tscn")
var impact_wall = preload("res://Assets/Effects/ImpactSparks.tscn")
var impact_player = preload("res://Assets/Effects/ImpactBlood.tscn")
# accuracy
var spread_min = 1
var spread_max = 64
var spread_lerp = 0.01
var spread_boost = 16
var spread = spread_min
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
@ -21,12 +28,22 @@ var impact_player = preload("res://Assets/Effects/ImpactBlood.tscn")
#enum Trigger {TRIGGER_PRIMARY, TRIGGER_SECONDARY}
@rpc(any, sync, reliable) func shoot():
#print("SHOOT from PID ", get_tree().multiplayer.get_multiplayer_unique_id(), " controlled by ", player.get_multiplayer_authority())
#spread = min (spread + spread_boost, spread_max)
spread = min(spread + spread_boost, spread_max)
var spread_offset = Vector3.ZERO
spread_offset.x = randf_range(-1,1)
spread_offset.y = randf_range(-1,1)
spread_offset.z = randf_range(-1,1)
spread_offset = spread_offset.normalized() * randf_range(spread_min, spread)
var space_state = get_world_3d().direct_space_state
var from = camera.get_global_transform().origin
var aim = - camera.get_global_transform().basis[2]
var to = from + (aim * 1000)
var to = from + (aim * 1000) + spread_offset
var ray = space_state.intersect_ray(from, to, [player])

View File

@ -94,9 +94,11 @@ func _process(delta):
if local_player:
$Label.text += "\n\nLOCAL PLAYER DEAD: " + str(local_player.dead)
$Label.text += "\n\nWEAPON SPREAD: " + str(local_player.weapon.spread)
$Label.text += "\n\nGAME RESET AT: " + str(reset_at)
# respawn queue
for i in spawn_queue.keys():
if spawn_queue[i] <= uptime: