added simulated drop to arrows
This commit is contained in:
@@ -96,6 +96,7 @@ size = Vector3(1, 3.50049, 1.52917)
|
|||||||
collision_layer = 20
|
collision_layer = 20
|
||||||
collision_mask = 5
|
collision_mask = 5
|
||||||
script = ExtResource("1_5wxv7")
|
script = ExtResource("1_5wxv7")
|
||||||
|
arrows = 100
|
||||||
|
|
||||||
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
||||||
transform = Transform3D(1, -1.74846e-07, 0, 1.74846e-07, 1, 0, 0, 0, 1, -2.406e-07, 1.87607, 0.0537765)
|
transform = Transform3D(1, -1.74846e-07, 0, 1.74846e-07, 1, 0, 0, 0, 1, -2.406e-07, 1.87607, 0.0537765)
|
||||||
@@ -120,6 +121,7 @@ script = ExtResource("5_hck1p")
|
|||||||
[node name="Ranged Attack" type="Node" parent="State Machine"]
|
[node name="Ranged Attack" type="Node" parent="State Machine"]
|
||||||
script = ExtResource("6_08u7w")
|
script = ExtResource("6_08u7w")
|
||||||
fired_object = ExtResource("7_kgmex")
|
fired_object = ExtResource("7_kgmex")
|
||||||
|
object_speed = 40.0
|
||||||
|
|
||||||
[node name="Body" type="MeshInstance3D" parent="."]
|
[node name="Body" type="MeshInstance3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0.0537765)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0.0537765)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ class_name Arrow
|
|||||||
var follow_target
|
var follow_target
|
||||||
var spawn_out = false
|
var spawn_out = false
|
||||||
|
|
||||||
|
const SPEED_DRAIN_RATE : float = 10.0
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pickup_collision.monitorable = false
|
pickup_collision.monitorable = false
|
||||||
@@ -23,14 +24,19 @@ func _physics_process(delta: float) -> void:
|
|||||||
reparent(body_hit)
|
reparent(body_hit)
|
||||||
var stick_point = hit_ray.get_collision_point()
|
var stick_point = hit_ray.get_collision_point()
|
||||||
if land_depth.global_position.distance_to(stick_point) > .2:
|
if land_depth.global_position.distance_to(stick_point) > .2:
|
||||||
global_position += global_transform.basis * Vector3(0,0,-speed) * delta
|
arrow_move(delta)
|
||||||
else:
|
else:
|
||||||
global_position += global_transform.basis * Vector3(0,0,-speed) * delta
|
arrow_move(delta)
|
||||||
else:
|
else:
|
||||||
pickup_collision.monitorable = true
|
pickup_collision.monitorable = true
|
||||||
|
|
||||||
pickup_follow(delta)
|
pickup_follow(delta)
|
||||||
|
|
||||||
|
func arrow_move(delta):
|
||||||
|
current_speed = clamp(current_speed - (delta * SPEED_DRAIN_RATE),0,1000)
|
||||||
|
var applied_gravity = -9.8 * ((start_speed - current_speed) / current_speed)
|
||||||
|
global_position += global_transform.basis * Vector3(0,applied_gravity,-current_speed) * delta
|
||||||
|
|
||||||
func pickup_follow(delta):
|
func pickup_follow(delta):
|
||||||
if follow_target != null:
|
if follow_target != null:
|
||||||
follow_target.arrows += 1
|
follow_target.arrows += 1
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ var gold = 0
|
|||||||
const MAX_HEALTH : float = 100
|
const MAX_HEALTH : float = 100
|
||||||
var health = MAX_HEALTH
|
var health = MAX_HEALTH
|
||||||
|
|
||||||
var arrows = 10
|
@export var arrows = 10
|
||||||
|
|
||||||
const MAX_STAMINA : float = 100
|
const MAX_STAMINA : float = 100
|
||||||
var stamina = MAX_STAMINA
|
var stamina = MAX_STAMINA
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var dodge_timer = DODGE_TIME
|
|||||||
|
|
||||||
func Enter():
|
func Enter():
|
||||||
character.anim_player.play("dodge")
|
character.anim_player.play("dodge")
|
||||||
|
character.visible = false
|
||||||
|
|
||||||
func Physics_Update(delta):
|
func Physics_Update(delta):
|
||||||
if dodge_timer > 0:
|
if dodge_timer > 0:
|
||||||
@@ -19,3 +20,6 @@ func Physics_Update(delta):
|
|||||||
|
|
||||||
character.velocity.x = character.dodge_direction.x * DODGE_SPEED
|
character.velocity.x = character.dodge_direction.x * DODGE_SPEED
|
||||||
character.velocity.z = character.dodge_direction.y * DODGE_SPEED
|
character.velocity.z = character.dodge_direction.y * DODGE_SPEED
|
||||||
|
|
||||||
|
func Exit():
|
||||||
|
character.visible = true
|
||||||
|
|||||||
@@ -2,5 +2,7 @@ extends Node3D
|
|||||||
class_name Projectile
|
class_name Projectile
|
||||||
|
|
||||||
var damage = 1
|
var damage = 1
|
||||||
var speed
|
var power
|
||||||
|
var start_speed
|
||||||
|
var current_speed
|
||||||
var despawn = false
|
var despawn = false
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ class_name PlayerRangedAttack
|
|||||||
@export var object_speed : float = 20.0
|
@export var object_speed : float = 20.0
|
||||||
@export var arrow_damage : float = 1
|
@export var arrow_damage : float = 1
|
||||||
|
|
||||||
|
var charged_power = 0.0
|
||||||
|
|
||||||
|
const CHARGE_RATE = 25.0
|
||||||
|
|
||||||
func Enter():
|
func Enter():
|
||||||
character.velocity = Vector3.ZERO
|
character.velocity = Vector3.ZERO
|
||||||
|
|
||||||
@@ -15,12 +19,21 @@ func Physics_Update(delta):
|
|||||||
fire_projectile()
|
fire_projectile()
|
||||||
Transitioned.emit(self,"on floor")
|
Transitioned.emit(self,"on floor")
|
||||||
|
|
||||||
|
charge_shot(delta)
|
||||||
|
|
||||||
|
func charge_shot(delta):
|
||||||
|
charged_power = clamp(charged_power + delta * CHARGE_RATE,0,100)
|
||||||
|
|
||||||
func fire_projectile():
|
func fire_projectile():
|
||||||
var arrow_spawn = fired_object.instantiate()
|
var arrow_spawn = fired_object.instantiate()
|
||||||
get_tree().current_scene.add_child(arrow_spawn)
|
get_tree().current_scene.add_child(arrow_spawn)
|
||||||
character.arrows -= 1
|
character.arrows -= 1
|
||||||
arrow_spawn.speed = object_speed
|
arrow_spawn.start_speed = object_speed
|
||||||
|
arrow_spawn.current_speed = object_speed
|
||||||
|
arrow_spawn.power = charged_power
|
||||||
arrow_spawn.transform.basis = character.body.global_transform.basis
|
arrow_spawn.transform.basis = character.body.global_transform.basis
|
||||||
arrow_spawn.global_position = character.body.global_position
|
arrow_spawn.global_position = character.body.global_position
|
||||||
print("ARROW POS :", arrow_spawn.global_position)
|
print("ARROW POS :", arrow_spawn.global_position)
|
||||||
|
|
||||||
|
func Exit():
|
||||||
|
print("CHARGE POWER: ",charged_power)
|
||||||
|
|||||||
Reference in New Issue
Block a user