fix weapon draw bug
This commit is contained in:
@@ -29,28 +29,34 @@ var SHOOTING_SPEED: float
|
||||
var can_shoot : bool
|
||||
var clip : int
|
||||
var state = DEFAULT
|
||||
var tween : Tween
|
||||
|
||||
func stop_tween():
|
||||
if(tween.is_running()):
|
||||
tween.stop()
|
||||
|
||||
func init():
|
||||
visible = true
|
||||
state = DEFAULT
|
||||
SHOOTING_SPEED = 60.0 / RPM
|
||||
var tween = create_tween()
|
||||
if(tween != null && tween.is_running()):
|
||||
tween.stop()
|
||||
|
||||
MODEL.position = DRAW_POS
|
||||
MODEL.rotation = DRAW_ROT
|
||||
|
||||
|
||||
can_shoot = true
|
||||
tween.tween_callback(InitialPos).set_delay(DRAW_TIME)
|
||||
InitialPos(DRAW_TIME, DRAW_TIME)
|
||||
|
||||
|
||||
|
||||
func InitialPos():
|
||||
var tween = create_tween()
|
||||
func InitialPos(draw_time, ready_time):
|
||||
tween = create_tween()
|
||||
tween.set_trans(Tween.TRANS_QUAD)
|
||||
|
||||
tween.set_parallel(true)
|
||||
tween.tween_property(MODEL, "position", Vector3.ZERO, RECOIL_COOLDOWN / 2)
|
||||
tween.tween_property(MODEL, "rotation", Vector3.ZERO, RECOIL_COOLDOWN / 2)
|
||||
tween.tween_callback(func(): state = INITIAL).set_delay(SHOOTING_SPEED / 2)
|
||||
tween.tween_property(MODEL, "position", Vector3.ZERO, draw_time)
|
||||
tween.tween_property(MODEL, "rotation", Vector3.ZERO, draw_time)
|
||||
tween.tween_callback(func(): state = INITIAL).set_delay(ready_time)
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +68,7 @@ func Shoot():
|
||||
clip -= 1
|
||||
|
||||
state = SHOOT;
|
||||
var tween = create_tween()
|
||||
tween = create_tween()
|
||||
tween.set_trans(Tween.TRANS_ELASTIC)
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_parallel(true)
|
||||
@@ -70,7 +76,7 @@ func Shoot():
|
||||
var rand_rot_y = randf_range(-ANGULAR_MOMENTUM.y,ANGULAR_MOMENTUM.y)
|
||||
var rand_rot_z = randf_range(-ANGULAR_MOMENTUM.z,ANGULAR_MOMENTUM.z)
|
||||
tween.tween_property(MODEL, "rotation", Vector3(deg_to_rad(ANGULAR_MOMENTUM.x),deg_to_rad(rand_rot_y),deg_to_rad(rand_rot_z)),RECOIL_COOLDOWN /2)
|
||||
tween.tween_callback(InitialPos).set_delay(SHOOTING_SPEED / 2)
|
||||
tween.tween_callback(func(): InitialPos(RECOIL_COOLDOWN / 2, SHOOTING_SPEED / 2)).set_delay(SHOOTING_SPEED / 2)
|
||||
return true
|
||||
return false
|
||||
|
||||
@@ -85,7 +91,7 @@ func Release():
|
||||
func Reload():
|
||||
if(clip < MAX_CLIP && state == INITIAL):
|
||||
state = RELOAD
|
||||
var tween = create_tween()
|
||||
tween = create_tween()
|
||||
tween.set_trans(Tween.TRANS_CIRC)
|
||||
tween.set_ease(Tween.EASE_IN)
|
||||
tween.set_parallel(true)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
extends Node3D
|
||||
|
||||
const CONFIG_PATH = "weapons.cfg"
|
||||
const REVOLVER = 0
|
||||
const UZI = 1
|
||||
const CHAINSAW = 2
|
||||
signal shoot
|
||||
|
||||
var state = 0
|
||||
@onready var player_root = get_node("../../../../PlayerQ3") as CharacterBody3D
|
||||
@@ -26,8 +24,7 @@ func init():
|
||||
return
|
||||
|
||||
Init_Config(config)
|
||||
weapons[current_weapon].init()
|
||||
raycast.target_position.z = -weapons[current_weapon].RAY_LEN
|
||||
ChangeWeapon(0)
|
||||
|
||||
func Init_Config(config):
|
||||
for weapon in config.get_sections():
|
||||
@@ -96,12 +93,14 @@ func _unhandled_input(_event):
|
||||
func ChangeWeapon(i):
|
||||
weapons[current_weapon].hide()
|
||||
current_weapon = i
|
||||
weapons[current_weapon].show()
|
||||
weapons[current_weapon].init()
|
||||
raycast.target_position.z = -weapons[current_weapon].RAY_LEN
|
||||
|
||||
var time = 0
|
||||
func _process(delta):
|
||||
if Input.is_action_pressed("shoot") && weapons[current_weapon].Shoot():
|
||||
shoot.emit(0.20, 0.15)
|
||||
if(weapons[current_weapon].HITSCAN):
|
||||
HitScan()
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user