now headless version is run via --headless. By default, server launches with spectator camera

This commit is contained in:
leca 2024-02-17 21:42:18 +03:00
parent 4dd130ee10
commit 074ea8b463
5 changed files with 86 additions and 0 deletions

8
models/spectator.tscn Normal file
View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://bf6uev4mtg2ls"]
[ext_resource type="Script" path="res://scripts/SpectatorControls.gd" id="1_uqbjn"]
[node name="head" type="Node3D"]
script = ExtResource("1_uqbjn")
[node name="Camera" type="Camera3D" parent="."]

View File

@ -59,3 +59,18 @@ shoot={
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
crawl={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
MWU={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
MWD={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}

View File

@ -42,6 +42,9 @@ func StartServer():
peer.connect("peer_connected", _Peer_Connected)
peer.connect("peer_disconnected", _Peer_Disconnected)
var spectator = preload("res://models/spectator.tscn").instantiate()
server_map.add_child(spectator)
func send_everyone_except(client_id, args):
if (typeof(args[0]) == 4): #string
for current_client_id in clients.keys():

View File

@ -0,0 +1,44 @@
extends Node3D
const SENSETIVITY = 0.009;
var walk = 2
@onready var head = $"."
@onready var camera = $"./Camera"
func _ready():
camera.make_current()
func _unhandled_input(event):
if Input.is_action_pressed("MWU"):
walk += walk / 5.
print("UP " + str(walk))
if Input.is_action_pressed("MWD"):
walk -= walk / 5.
print("DOWN " + str(walk))
walk = clamp(walk, 0.01, 15)
if event is InputEventMouseMotion:
head.rotate_y(-event.relative.x * SENSETIVITY)
camera.rotate_x(-event.relative.y * SENSETIVITY)
camera.rotation.x = clamp(camera.rotation.x, deg_to_rad(-90), deg_to_rad(90))
func _physics_process(delta):
var input_dir = Input.get_vector("left", "right", "forward", "backward")
#var direction = head.transform.rotation
var direction = (head.transform.basis * Vector3(input_dir.x, input_dir.x, input_dir.y)).normalized()
#var direction = (head.transform.basis * Vector2(input_dir.x, input_dir.y)).normalized()
var velocity = Vector3.ZERO
var speed
if Input.is_action_pressed("run"):
speed = walk * 2
else:
speed = walk
velocity.y = Input.get_vector("crawl", "jump", "left", "right").x * speed
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
else:
velocity.x = lerp(velocity.x, direction.x * speed, delta * 4)
velocity.z = lerp(velocity.z, direction.z * speed, delta * 4)
head.position += velocity

View File

@ -8,6 +8,22 @@
"run": 24,
"gravity": 9.8,
"jump": 12
},
"weapons": {
"pistol": {
"damage": 10,
"reload": 2,
"magazine": 10,
"fireRate": 0.5,
"spreading": 0
},
"ak-47": {
"damage": 5,
"reload": 4,
"magazine": 30,
"fireRate": 0.2,
"spreading": 0
}
}
}
}