fix weapon draw bug
This commit is contained in:
1
Game.gd
1
Game.gd
@@ -1,5 +1,4 @@
|
|||||||
extends Node3D
|
extends Node3D
|
||||||
class_name Game
|
|
||||||
|
|
||||||
@onready var label : Label = $CanvasLayer/Label
|
@onready var label : Label = $CanvasLayer/Label
|
||||||
@onready var player : CharacterBody3D = $PlayerQ3
|
@onready var player : CharacterBody3D = $PlayerQ3
|
||||||
|
|||||||
@@ -9,11 +9,6 @@
|
|||||||
config_version=5
|
config_version=5
|
||||||
|
|
||||||
_global_script_classes=[{
|
_global_script_classes=[{
|
||||||
"base": "Node3D",
|
|
||||||
"class": &"Game",
|
|
||||||
"language": &"GDScript",
|
|
||||||
"path": "res://Game.gd"
|
|
||||||
}, {
|
|
||||||
"base": "Node",
|
"base": "Node",
|
||||||
"class": &"Hitable",
|
"class": &"Hitable",
|
||||||
"language": &"GDScript",
|
"language": &"GDScript",
|
||||||
@@ -30,7 +25,6 @@ _global_script_classes=[{
|
|||||||
"path": "res://scripts/player/Weapon.gd"
|
"path": "res://scripts/player/Weapon.gd"
|
||||||
}]
|
}]
|
||||||
_global_script_class_icons={
|
_global_script_class_icons={
|
||||||
"Game": "",
|
|
||||||
"Hitable": "",
|
"Hitable": "",
|
||||||
"TBPlugin": "",
|
"TBPlugin": "",
|
||||||
"Weapon": ""
|
"Weapon": ""
|
||||||
|
|||||||
@@ -29,28 +29,34 @@ var SHOOTING_SPEED: float
|
|||||||
var can_shoot : bool
|
var can_shoot : bool
|
||||||
var clip : int
|
var clip : int
|
||||||
var state = DEFAULT
|
var state = DEFAULT
|
||||||
|
var tween : Tween
|
||||||
|
|
||||||
|
func stop_tween():
|
||||||
|
if(tween.is_running()):
|
||||||
|
tween.stop()
|
||||||
|
|
||||||
func init():
|
func init():
|
||||||
visible = true
|
state = DEFAULT
|
||||||
SHOOTING_SPEED = 60.0 / RPM
|
SHOOTING_SPEED = 60.0 / RPM
|
||||||
var tween = create_tween()
|
if(tween != null && tween.is_running()):
|
||||||
|
tween.stop()
|
||||||
|
|
||||||
MODEL.position = DRAW_POS
|
MODEL.position = DRAW_POS
|
||||||
MODEL.rotation = DRAW_ROT
|
MODEL.rotation = DRAW_ROT
|
||||||
|
|
||||||
|
|
||||||
can_shoot = true
|
can_shoot = true
|
||||||
tween.tween_callback(InitialPos).set_delay(DRAW_TIME)
|
InitialPos(DRAW_TIME, DRAW_TIME)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func InitialPos():
|
func InitialPos(draw_time, ready_time):
|
||||||
var tween = create_tween()
|
tween = create_tween()
|
||||||
tween.set_trans(Tween.TRANS_QUAD)
|
tween.set_trans(Tween.TRANS_QUAD)
|
||||||
|
|
||||||
tween.set_parallel(true)
|
tween.set_parallel(true)
|
||||||
tween.tween_property(MODEL, "position", Vector3.ZERO, RECOIL_COOLDOWN / 2)
|
tween.tween_property(MODEL, "position", Vector3.ZERO, draw_time)
|
||||||
tween.tween_property(MODEL, "rotation", Vector3.ZERO, RECOIL_COOLDOWN / 2)
|
tween.tween_property(MODEL, "rotation", Vector3.ZERO, draw_time)
|
||||||
tween.tween_callback(func(): state = INITIAL).set_delay(SHOOTING_SPEED / 2)
|
tween.tween_callback(func(): state = INITIAL).set_delay(ready_time)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -62,7 +68,7 @@ func Shoot():
|
|||||||
clip -= 1
|
clip -= 1
|
||||||
|
|
||||||
state = SHOOT;
|
state = SHOOT;
|
||||||
var tween = create_tween()
|
tween = create_tween()
|
||||||
tween.set_trans(Tween.TRANS_ELASTIC)
|
tween.set_trans(Tween.TRANS_ELASTIC)
|
||||||
tween.set_ease(Tween.EASE_OUT)
|
tween.set_ease(Tween.EASE_OUT)
|
||||||
tween.set_parallel(true)
|
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_y = randf_range(-ANGULAR_MOMENTUM.y,ANGULAR_MOMENTUM.y)
|
||||||
var rand_rot_z = randf_range(-ANGULAR_MOMENTUM.z,ANGULAR_MOMENTUM.z)
|
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_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 true
|
||||||
return false
|
return false
|
||||||
|
|
||||||
@@ -85,7 +91,7 @@ func Release():
|
|||||||
func Reload():
|
func Reload():
|
||||||
if(clip < MAX_CLIP && state == INITIAL):
|
if(clip < MAX_CLIP && state == INITIAL):
|
||||||
state = RELOAD
|
state = RELOAD
|
||||||
var tween = create_tween()
|
tween = create_tween()
|
||||||
tween.set_trans(Tween.TRANS_CIRC)
|
tween.set_trans(Tween.TRANS_CIRC)
|
||||||
tween.set_ease(Tween.EASE_IN)
|
tween.set_ease(Tween.EASE_IN)
|
||||||
tween.set_parallel(true)
|
tween.set_parallel(true)
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
const CONFIG_PATH = "weapons.cfg"
|
const CONFIG_PATH = "weapons.cfg"
|
||||||
const REVOLVER = 0
|
signal shoot
|
||||||
const UZI = 1
|
|
||||||
const CHAINSAW = 2
|
|
||||||
|
|
||||||
var state = 0
|
var state = 0
|
||||||
@onready var player_root = get_node("../../../../PlayerQ3") as CharacterBody3D
|
@onready var player_root = get_node("../../../../PlayerQ3") as CharacterBody3D
|
||||||
@@ -26,8 +24,7 @@ func init():
|
|||||||
return
|
return
|
||||||
|
|
||||||
Init_Config(config)
|
Init_Config(config)
|
||||||
weapons[current_weapon].init()
|
ChangeWeapon(0)
|
||||||
raycast.target_position.z = -weapons[current_weapon].RAY_LEN
|
|
||||||
|
|
||||||
func Init_Config(config):
|
func Init_Config(config):
|
||||||
for weapon in config.get_sections():
|
for weapon in config.get_sections():
|
||||||
@@ -96,12 +93,14 @@ func _unhandled_input(_event):
|
|||||||
func ChangeWeapon(i):
|
func ChangeWeapon(i):
|
||||||
weapons[current_weapon].hide()
|
weapons[current_weapon].hide()
|
||||||
current_weapon = i
|
current_weapon = i
|
||||||
|
weapons[current_weapon].show()
|
||||||
weapons[current_weapon].init()
|
weapons[current_weapon].init()
|
||||||
raycast.target_position.z = -weapons[current_weapon].RAY_LEN
|
raycast.target_position.z = -weapons[current_weapon].RAY_LEN
|
||||||
|
|
||||||
var time = 0
|
var time = 0
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if Input.is_action_pressed("shoot") && weapons[current_weapon].Shoot():
|
if Input.is_action_pressed("shoot") && weapons[current_weapon].Shoot():
|
||||||
|
shoot.emit(0.20, 0.15)
|
||||||
if(weapons[current_weapon].HITSCAN):
|
if(weapons[current_weapon].HITSCAN):
|
||||||
HitScan()
|
HitScan()
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user