Compare commits
1 Commits
a5018a911a
...
9b1ab02b94
Author | SHA1 | Date | |
---|---|---|---|
9b1ab02b94 |
22
scenes/maps/base/bullet_spawner/bullet_controller.gd
Normal file
22
scenes/maps/base/bullet_spawner/bullet_controller.gd
Normal file
@ -0,0 +1,22 @@
|
||||
extends Node
|
||||
|
||||
# This script shoud be able to find the player
|
||||
|
||||
var players: Dictionary = {}
|
||||
|
||||
func spawn_a_bullet():
|
||||
# -- Get
|
||||
pass
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var world: MapController = find_parent("Map")
|
||||
# Get all the players on the server and add
|
||||
# corresponding nodes to them
|
||||
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
8
scenes/maps/base/bullet_spawner/bullet_spawner.tscn
Normal file
8
scenes/maps/base/bullet_spawner/bullet_spawner.tscn
Normal file
@ -0,0 +1,8 @@
|
||||
[gd_scene format=3 uid="uid://sh5diukewgs5"]
|
||||
|
||||
[node name="BulletSpawner" type="Node3D"]
|
||||
|
||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
|
||||
spawn_path = NodePath("../Node3D")
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="."]
|
@ -1,10 +1,13 @@
|
||||
extends Node
|
||||
class_name MapController extends Node
|
||||
@export_category("MapController")
|
||||
|
||||
const PLAYER_SPAWNER: String = "res://scenes/maps/base/player_spawner/PlayerSpawner.tscn"
|
||||
const OBJECT_SPAWNER: String = "res://scenes/maps/base/object_spawner/ObjectSpawner.tscn"
|
||||
const PLAYER_SPAWNER: String = "res://scenes/maps/base/player_spawner/player_spawner.tscn"
|
||||
const OBJECT_SPAWNER: String = "res://scenes/maps/base/object_spawner/object_spawner.tscn"
|
||||
|
||||
var player_spawner: Node3D
|
||||
var player_spawner: PlayerSpawnerController
|
||||
var object_spawner: Node3D
|
||||
@onready var spawn_locations: SpawnController = $SpawnLocations
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@ -19,8 +22,8 @@ func _ready() -> void:
|
||||
if err != OK:
|
||||
print("Couldn't load object spawner")
|
||||
# add objects spawner
|
||||
|
||||
_spawn_player()
|
||||
if multiplayer.is_server():
|
||||
_spawn_player()
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
@ -28,21 +31,10 @@ func _ready() -> void:
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
@onready var SpawnLocations: SpawnController = $SpawnLocations
|
||||
|
||||
func _spawn_player():
|
||||
var char : Node3D = null
|
||||
if multiplayer.is_server():
|
||||
for i in GameServerManager.players:
|
||||
char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate()
|
||||
char.name = "PlayerPlaceholder_" + str(GameServerManager.players[i].name)
|
||||
var position = SpawnLocations.get_spawner(SpawnController.Sides.BLUE)
|
||||
char.global_position = position
|
||||
char.global_position = position
|
||||
var spawner: MultiplayerSpawner = player_spawner.find_child("MultiplayerSpawner")
|
||||
var root_node: Node3D = player_spawner.find_child("Players")
|
||||
spawner.spawn(char)
|
||||
root_node.add_child(char)
|
||||
player_spawner.spawn_players(spawn_locations)
|
||||
|
||||
func _add_player_spawner() -> Error :
|
||||
if not ResourceLoader.exists(PLAYER_SPAWNER):
|
||||
|
33
scenes/maps/base/player_spawner/player_spawner.gd
Normal file
33
scenes/maps/base/player_spawner/player_spawner.gd
Normal file
@ -0,0 +1,33 @@
|
||||
class_name PlayerSpawnerController extends Node3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _get_spawner() -> MultiplayerSpawner:
|
||||
return $MultiplayerSpawner
|
||||
|
||||
func _get_root() -> Node3D:
|
||||
return $Players
|
||||
|
||||
# -- Spawn a player node and sync it across all peers
|
||||
func spawn_players(spawn_location: SpawnController) -> Error:
|
||||
print("spawning players")
|
||||
var char : Node3D = null
|
||||
print(GameServerManager.players)
|
||||
for i in GameServerManager.players:
|
||||
var player_data = GameServerManager.players[i]
|
||||
char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate()
|
||||
char.name = "PlayerPlaceholder_" + str(player_data.name)
|
||||
var position = spawn_location.get_spawner(SpawnController.Sides.BLUE)
|
||||
char.global_position = position
|
||||
char.global_position = position
|
||||
_get_spawner().spawn(char)
|
||||
_get_root().add_child(char)
|
||||
return OK
|
@ -1,6 +1,9 @@
|
||||
[gd_scene format=3 uid="uid://xh710fr73bid"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://xh710fr73bid"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/maps/base/player_spawner/player_spawner.gd" id="1_2hsyd"]
|
||||
|
||||
[node name="PlayerSpawner" type="Node3D"]
|
||||
script = ExtResource("1_2hsyd")
|
||||
|
||||
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
|
||||
_spawnable_scenes = PackedStringArray("res://scenes/characters/placeholder.tscn")
|
@ -26,13 +26,16 @@ func _process(delta: float) -> void:
|
||||
|
||||
|
||||
func _get_available_spawn(spawn_set: Node3D) -> Node3D:
|
||||
var spawns: Array[Node3D] = []
|
||||
for spawn: Node3D in spawn_set.get_children():
|
||||
if not spawn.busy:
|
||||
spawns.push_back(spawn)
|
||||
|
||||
var random_index: int = randi_range(0, spawns.size())
|
||||
return spawns[random_index - 1]
|
||||
if multiplayer.is_server():
|
||||
var spawns: Array[Node3D] = []
|
||||
for spawn: Node3D in spawn_set.get_children():
|
||||
if not spawn.busy:
|
||||
spawns.push_back(spawn)
|
||||
print(spawns.size())
|
||||
var random_index: int = randi_range(0, spawns.size() - 1)
|
||||
print(random_index)
|
||||
return spawns[random_index]
|
||||
return null
|
||||
|
||||
|
||||
func get_spawner(team: Sides) -> Vector3:
|
||||
|
@ -1,23 +0,0 @@
|
||||
extends CSGBox3D
|
||||
|
||||
var health = 5
|
||||
|
||||
@export var color: Color = Color(0, 0, 0)
|
||||
|
||||
var colors = [Color(1.0, 0.0, 0.0, 1.0),
|
||||
Color(0.0, 1.0, 0.0, 1.0),
|
||||
Color(0.0, 0.0, 1.0, 0.0)]
|
||||
|
||||
func take_damage():
|
||||
color = Color(randf(), randf(), randf())
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
material_override.albedo_color = color
|
||||
if health < 1:
|
||||
queue_free()
|
@ -1,43 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
var player_side: String
|
||||
|
||||
@onready var intro_camera = $Intro/CameraMount/IntroCamera
|
||||
@onready var intro_view_port = $Intro/CameraMount/IntroCamera/SubViewportContainer/SubViewport
|
||||
@onready var spawns = $Spawns
|
||||
@onready var root = $'.'
|
||||
@onready var players = $Players
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var char : Node3D = null
|
||||
var red_spawn: Node3D = $Spawns/Blue/SpawnArea
|
||||
var position := red_spawn.global_position
|
||||
if multiplayer.is_server():
|
||||
for i in GameServerManager.players:
|
||||
char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate()
|
||||
char.name = "PlayerPlaceholder_" + str(GameServerManager.players[i].name)
|
||||
char.global_position = position
|
||||
var my_random_number = RandomNumberGenerator.new().randf_range(0.0, 5.0)
|
||||
char.global_position = position
|
||||
char.global_position.x += my_random_number
|
||||
char.global_position.y += 300 + my_random_number
|
||||
char.global_position.z += my_random_number
|
||||
$MultiplayerSpawner.spawn(char)
|
||||
players.add_child(char)
|
||||
|
||||
|
||||
var bullet_amount: int = 0
|
||||
func spawn_bullet(starting_point: Node3D, speed: int, damage: int):
|
||||
var node: Node3D = ResourceLoader.load("res://scenes/weapon/bullet.tscn").instantiate()
|
||||
node.position = starting_point.global_position
|
||||
node.transform.basis = starting_point.global_transform.basis
|
||||
node.name = str(bullet_amount)
|
||||
node.speed = speed
|
||||
node.damage = damage
|
||||
bullet_amount += 1
|
||||
#$BulletSpawner.spawn(node)
|
||||
$Bullets.add_child(node)
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
@ -1,11 +0,0 @@
|
||||
extends CSGBox3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
@ -1,17 +0,0 @@
|
||||
extends Control
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
@onready var health_indicator: Label = $HealthIndicator
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
var root := get_tree().get_root()
|
||||
var id := multiplayer.get_unique_id()
|
||||
var player_data = GameServerManager.get_player_health.rpc_id(1, id)
|
||||
health_indicator.text = str(player_data["health"])
|
||||
|
||||
pass
|
@ -1,23 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
var target_node_name: String = "TargetNode" # Name of the Node3D to detect
|
||||
|
||||
@onready var raycast : RayCast3D = $CameraMount/Camera3D/RayCast3D
|
||||
@onready var camera : Camera3D = $CameraMount/Camera3D
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
var blue := $ChooseTeam/Blue
|
||||
var red := $ChooseTeam/Read
|
||||
if raycast.is_colliding():
|
||||
var collider = raycast.get_collider()
|
||||
if collider and collider.name == target_node_name:
|
||||
print("Mouse is pointing at:", collider.name)
|
||||
else:
|
||||
print("Mouse is not pointing at the target node.")
|
||||
else:
|
||||
print("Mouse is not pointing at anything.")
|
@ -1,10 +1,54 @@
|
||||
[gd_scene load_steps=81 format=4 uid="uid://c1v6kb00y77ij"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/maps/el_test.gd" id="1_5rsqk"]
|
||||
[ext_resource type="Texture2D" uid="uid://60qg81svnxfd" path="res://assets/models/maps/el_test_Image_0.png" id="2_hsvct"]
|
||||
[ext_resource type="Texture2D" uid="uid://blj7gvw33u8qd" path="res://assets/models/maps/el_test_Image_1.png" id="3_1mmpv"]
|
||||
[ext_resource type="Texture2D" uid="uid://to0g5ktan37x" path="res://assets/models/maps/el_test_Image_2.png" id="4_r2n1c"]
|
||||
[ext_resource type="Script" path="res://scenes/maps/csg_box_3d.gd" id="5_ieyhq"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_fyi6q"]
|
||||
script/source = "extends Node3D
|
||||
|
||||
var player_side: String
|
||||
|
||||
@onready var intro_camera = $Intro/CameraMount/IntroCamera
|
||||
@onready var intro_view_port = $Intro/CameraMount/IntroCamera/SubViewportContainer/SubViewport
|
||||
@onready var spawns = $Spawns
|
||||
@onready var root = $'.'
|
||||
@onready var players = $Players
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var char : Node3D = null
|
||||
var red_spawn: Node3D = $Spawns/Blue/SpawnArea
|
||||
var position := red_spawn.global_position
|
||||
if multiplayer.is_server():
|
||||
for i in GameServerManager.players:
|
||||
char = ResourceLoader.load(\"res://scenes/characters/placeholder.tscn\").instantiate()
|
||||
char.name = \"PlayerPlaceholder_\" + str(GameServerManager.players[i].name)
|
||||
char.global_position = position
|
||||
var my_random_number = RandomNumberGenerator.new().randf_range(0.0, 5.0)
|
||||
char.global_position = position
|
||||
char.global_position.x += my_random_number
|
||||
char.global_position.y += 300 + my_random_number
|
||||
char.global_position.z += my_random_number
|
||||
$MultiplayerSpawner.spawn(char)
|
||||
players.add_child(char)
|
||||
|
||||
|
||||
var bullet_amount: int = 0
|
||||
func spawn_bullet(starting_point: Node3D, speed: int, damage: int):
|
||||
var node: Node3D = ResourceLoader.load(\"res://scenes/weapon/bullet.tscn\").instantiate()
|
||||
node.position = starting_point.global_position
|
||||
node.transform.basis = starting_point.global_transform.basis
|
||||
node.name = str(bullet_amount)
|
||||
node.speed = speed
|
||||
node.damage = damage
|
||||
bullet_amount += 1
|
||||
#$BulletSpawner.spawn(node)
|
||||
$Bullets.add_child(node)
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
"
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1on1b"]
|
||||
resource_name = "Orange_Playground_Base_Color"
|
||||
@ -837,13 +881,39 @@ data = PackedVector3Array(0, 0, 100, -100, 100, 100, 0, 100, 100, 0, 0, 100, -10
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0rtro"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_js4tj"]
|
||||
script/source = "extends CSGBox3D
|
||||
|
||||
var health = 5
|
||||
|
||||
@export var color: Color = Color(0, 0, 0)
|
||||
|
||||
var colors = [Color(1.0, 0.0, 0.0, 1.0),
|
||||
Color(0.0, 1.0, 0.0, 1.0),
|
||||
Color(0.0, 0.0, 1.0, 0.0)]
|
||||
|
||||
func take_damage():
|
||||
color = Color(randf(), randf(), randf())
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
material_override.albedo_color = color
|
||||
if health < 1:
|
||||
queue_free()
|
||||
"
|
||||
|
||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_bhqft"]
|
||||
properties/0/path = NodePath("CSGBox3D:color")
|
||||
properties/0/spawn = true
|
||||
properties/0/replication_mode = 1
|
||||
|
||||
[node name="ElTest" type="Node3D"]
|
||||
script = ExtResource("1_5rsqk")
|
||||
script = SubResource("GDScript_fyi6q")
|
||||
|
||||
[node name="Light" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.508004, 0.861354, 0, -0.861354, 0.508004, 0, 2.97783, 2.62213)
|
||||
@ -1169,7 +1239,7 @@ shape = SubResource("ConcavePolygonShape3D_1uclv")
|
||||
transform = Transform3D(1, 0, 0, 0, 1.48122, 0, 0, 0, 1, 2.17806, 1.80141, 0)
|
||||
material_override = SubResource("StandardMaterial3D_0rtro")
|
||||
use_collision = true
|
||||
script = ExtResource("5_ieyhq")
|
||||
script = SubResource("GDScript_js4tj")
|
||||
|
||||
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="Map"]
|
||||
replication_config = SubResource("SceneReplicationConfig_bhqft")
|
||||
|
@ -947,7 +947,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.234959, 25.2818, 2.12756)
|
||||
[node name="Spawn2" type="Node3D" parent="SpawnLocations/Blue"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.4253, 15.2112, 4.25512)
|
||||
|
||||
[node name="Spawn2" type="Node3D" parent="SpawnLocations/Blue/Spawn2"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.29334, 15.2112, -11.6859)
|
||||
|
||||
[node name="Red" type="Node3D" parent="SpawnLocations"]
|
||||
|
@ -1,76 +0,0 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://hivk5ek6u887"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://c5uytbu1wc1bq" path="res://addons/kenney_prototype_textures/orange/texture_09.png" id="1_llm1c"]
|
||||
[ext_resource type="Texture2D" uid="uid://e4nd8b6f0tw7" path="res://addons/kenney_prototype_textures/dark/texture_04.png" id="2_k2arh"]
|
||||
[ext_resource type="PackedScene" uid="uid://1j5ajc26w5xk" path="res://scenes/utils/character_bak.tscn" id="3_6anfg"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bcdcw"]
|
||||
albedo_texture = ExtResource("1_lae2b")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p4psn"]
|
||||
albedo_texture = ExtResource("2_7newm")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0jiki"]
|
||||
albedo_texture = ExtResource("2_7newm")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1pwnn"]
|
||||
albedo_texture = ExtResource("2_7newm")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1yo6k"]
|
||||
albedo_texture = ExtResource("2_7newm")
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_3aaun"]
|
||||
|
||||
[sub_resource type="Sky" id="Sky_xco2g"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_3aaun")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_5t2t5"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_xco2g")
|
||||
sdfgi_enabled = true
|
||||
fog_light_energy = 0.52
|
||||
fog_density = 0.1387
|
||||
volumetric_fog_enabled = true
|
||||
volumetric_fog_density = 0.0
|
||||
|
||||
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_32hnm"]
|
||||
|
||||
[node name="TestMap" type="Node3D"]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 50, 0)
|
||||
|
||||
[node name="World" type="Node3D" parent="."]
|
||||
|
||||
[node name="Base" type="Node3D" parent="World"]
|
||||
|
||||
[node name="Floor" type="CSGBox3D" parent="World/Base"]
|
||||
use_collision = true
|
||||
size = Vector3(100, 1, 100)
|
||||
|
||||
[node name="Wall_1" type="CSGBox3D" parent="World/Base"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_p4psn")
|
||||
use_collision = true
|
||||
size = Vector3(1, 20, 100)
|
||||
|
||||
[node name="Wall_2" type="CSGBox3D" parent="World/Base"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_0jiki")
|
||||
use_collision = true
|
||||
size = Vector3(1, 20, 100)
|
||||
|
||||
[node name="Wall_3" type="CSGBox3D" parent="World/Base"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
|
||||
material_override = SubResource("StandardMaterial3D_1pwnn")
|
||||
use_collision = true
|
||||
size = Vector3(100, 20, 1)
|
||||
|
||||
[node name="Wall_4" type="CSGBox3D" parent="World/Base"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -50)
|
||||
material_override = SubResource("StandardMaterial3D_1yo6k")
|
||||
use_collision = true
|
||||
size = Vector3(100, 20, 1)
|
||||
|
||||
[node name="Character" parent="World" instance=ExtResource("3_6anfg")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.6432, 0)
|
14
scenes/resources/player_state.gd
Normal file
14
scenes/resources/player_state.gd
Normal file
@ -0,0 +1,14 @@
|
||||
class_name PlayerState extends Object
|
||||
@export_category("PlayerState")
|
||||
|
||||
# -- Player's metadata
|
||||
var name: String
|
||||
var id: int
|
||||
|
||||
# -- Player's in-game data
|
||||
var health: int
|
||||
var current_weapon_slot: int
|
||||
|
||||
func init(id: int, name: String):
|
||||
id = id
|
||||
name = name
|
@ -1,4 +1,5 @@
|
||||
extends Node3D
|
||||
class_name WeaponController extends Node3D
|
||||
@export_category("WeaponController")
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Main weapon params
|
||||
@ -8,6 +9,8 @@ extends Node3D
|
||||
@export var cooldown: float = 0
|
||||
# bullet speed in m/s
|
||||
@export var bullet_speed: int = 0
|
||||
@export var bullet_spread_script: GDScript
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
|
@ -6,7 +6,6 @@ func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
@onready var bullet_trace_distance: Node3D = $BulletTraceDistance
|
||||
@onready var bullet_trail_end: Node3D = $BulletTrailEnd
|
||||
|
||||
func shoot() -> Error:
|
||||
var bullet_start_node: Node3D = bullet_trace_distance.find_child("Start")
|
||||
var bullet_end_node: Node3D = bullet_trace_distance.find_child("End")
|
||||
|
@ -3,10 +3,12 @@ extends Node
|
||||
var players = {}
|
||||
|
||||
var local_player_health = 0
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@rpc("reliable", "call_local")
|
||||
func get_player_health(id: int) -> int:
|
||||
return players.get(id)["health"]
|
||||
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
@ -194,7 +194,7 @@ func _process(delta: float) -> void:
|
||||
fps_indicator.text = str(Engine.get_frames_per_second())
|
||||
if health == 0:
|
||||
alive = false
|
||||
var world: Node3D = find_parent("Map")
|
||||
var world: Node3D = find_parent("Map")
|
||||
var spawner: MultiplayerSpawner = world.find_child("ObjectSpawner").find_child("MultiplayerSpawner")
|
||||
var objects_root: Node3D = world.find_child("ObjectSpawner").find_child("Objects")
|
||||
spawner.spawn(model)
|
||||
|
Loading…
x
Reference in New Issue
Block a user