Implemented weapon spread (and corrected nerror with jetpack threshold)
parent
c342225cec
commit
e67ab9131c
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Reference in New Issue