cleaned up player code, file organization; implemented simple-ish physics
This commit is contained in:
parent
b525ffd024
commit
19b18532db
@ -35,6 +35,8 @@ end_turn={
|
|||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
3d/physics_engine="Jolt Physics"
|
3d/physics_engine="Jolt Physics"
|
||||||
|
2d/default_gravity=0.0
|
||||||
|
2d/default_gravity_vector=Vector2(0, 0)
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,14 @@
|
|||||||
[ext_resource type="Script" uid="uid://3c5arbqbgr2l" path="res://scripts/ball.gd" id="1_x8fbi"]
|
[ext_resource type="Script" uid="uid://3c5arbqbgr2l" path="res://scripts/ball.gd" id="1_x8fbi"]
|
||||||
[ext_resource type="Texture2D" uid="uid://vfxgx3oc6nm1" path="res://assets/ball/ball-kenney-accurate.png" id="2_41u45"]
|
[ext_resource type="Texture2D" uid="uid://vfxgx3oc6nm1" path="res://assets/ball/ball-kenney-accurate.png" id="2_41u45"]
|
||||||
|
|
||||||
[node name="Ball" type="Node2D" unique_id=1245529605]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_cxlvu"]
|
||||||
|
radius = 13.0
|
||||||
|
|
||||||
|
[node name="Ball" type="RigidBody2D" unique_id=1681382008]
|
||||||
script = ExtResource("1_x8fbi")
|
script = ExtResource("1_x8fbi")
|
||||||
|
|
||||||
[node name="BallSprite" type="Sprite2D" parent="." unique_id=982207895]
|
[node name="BallSprite" type="Sprite2D" parent="." unique_id=982207895]
|
||||||
texture = ExtResource("2_41u45")
|
texture = ExtResource("2_41u45")
|
||||||
|
|
||||||
|
[node name="BallShape" type="CollisionShape2D" parent="." unique_id=754296158]
|
||||||
|
shape = SubResource("CircleShape2D_cxlvu")
|
||||||
@ -29,6 +29,7 @@ centered = false
|
|||||||
navigation_polygon = SubResource("NavigationPolygon_klx28")
|
navigation_polygon = SubResource("NavigationPolygon_klx28")
|
||||||
|
|
||||||
[node name="KeyArea" type="Area2D" parent="." unique_id=538903225]
|
[node name="KeyArea" type="Area2D" parent="." unique_id=538903225]
|
||||||
|
unique_name_in_owner = true
|
||||||
position = Vector2(755, 292)
|
position = Vector2(755, 292)
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="KeyArea" unique_id=1398173864]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="KeyArea" unique_id=1398173864]
|
||||||
@ -36,6 +37,7 @@ shape = SubResource("RectangleShape2D_ih5bv")
|
|||||||
debug_color = Color(1, 1, 0, 0.41960785)
|
debug_color = Color(1, 1, 0, 0.41960785)
|
||||||
|
|
||||||
[node name="TwoPointArea" type="Area2D" parent="." unique_id=1591376341]
|
[node name="TwoPointArea" type="Area2D" parent="." unique_id=1591376341]
|
||||||
|
unique_name_in_owner = true
|
||||||
position = Vector2(760, 162.5)
|
position = Vector2(760, 162.5)
|
||||||
|
|
||||||
[node name="TwoPointArc" type="CollisionShape2D" parent="TwoPointArea" unique_id=704197509]
|
[node name="TwoPointArc" type="CollisionShape2D" parent="TwoPointArea" unique_id=704197509]
|
||||||
@ -1,11 +1,11 @@
|
|||||||
[gd_scene format=3 uid="uid://bhn3vm462n1rv"]
|
[gd_scene format=3 uid="uid://bhn3vm462n1rv"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://0xvlu81d8a01" path="res://scripts/game_manager.gd" id="1_7jktm"]
|
[ext_resource type="Script" uid="uid://0xvlu81d8a01" path="res://scripts/game_manager.gd" id="1_7jktm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cxbu51aedxg3c" path="res://court.tscn" id="1_e2o6t"]
|
[ext_resource type="PackedScene" uid="uid://cxbu51aedxg3c" path="res://scenes/court.tscn" id="1_e2o6t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://i0ijmmchb3s1" path="res://hoop.tscn" id="4_215e1"]
|
[ext_resource type="PackedScene" uid="uid://i0ijmmchb3s1" path="res://scenes/hoop.tscn" id="4_215e1"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b7js4xq85ajf7" path="res://teams/orange_team.tscn" id="6_eow3j"]
|
[ext_resource type="PackedScene" uid="uid://b7js4xq85ajf7" path="res://teams/orange_team.tscn" id="6_eow3j"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dndfw477wwjog" path="res://teams/blue_team.tscn" id="6_j5wjh"]
|
[ext_resource type="PackedScene" uid="uid://dndfw477wwjog" path="res://teams/blue_team.tscn" id="6_j5wjh"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cbqaj6trvqat0" path="res://ball.tscn" id="6_ryrav"]
|
[ext_resource type="PackedScene" uid="uid://cbqaj6trvqat0" path="res://scenes/ball.tscn" id="6_ryrav"]
|
||||||
|
|
||||||
[node name="Game" type="Node2D" unique_id=980666470 node_paths=PackedStringArray("ball", "court", "home_team", "away_team")]
|
[node name="Game" type="Node2D" unique_id=980666470 node_paths=PackedStringArray("ball", "court", "home_team", "away_team")]
|
||||||
script = ExtResource("1_7jktm")
|
script = ExtResource("1_7jktm")
|
||||||
@ -2,12 +2,15 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bs8r5rqnt33rf" path="res://scripts/player.gd" id="1_onrkg"]
|
[ext_resource type="Script" uid="uid://bs8r5rqnt33rf" path="res://scripts/player.gd" id="1_onrkg"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ctakygdw82fs2" path="res://assets/players/top-down/orange-45.png" id="2_onrkg"]
|
[ext_resource type="Texture2D" uid="uid://ctakygdw82fs2" path="res://assets/players/top-down/orange-45.png" id="2_onrkg"]
|
||||||
[ext_resource type="PackedScene" uid="uid://nbb3fdh08hbk" path="res://player_label.tscn" id="3_i3pqv"]
|
[ext_resource type="PackedScene" uid="uid://nbb3fdh08hbk" path="res://scenes/ui/player_label.tscn" id="3_i3pqv"]
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_i3pqv"]
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_i3pqv"]
|
||||||
radius = 11.0
|
radius = 11.0
|
||||||
height = 46.0
|
height = 46.0
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_qhqgy"]
|
||||||
|
radius = 75.0
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_i3pqv"]
|
[sub_resource type="Gradient" id="Gradient_i3pqv"]
|
||||||
offsets = PackedFloat32Array(0, 0.74882627)
|
offsets = PackedFloat32Array(0, 0.74882627)
|
||||||
colors = PackedColorArray(1, 1, 1, 0.5019608, 0, 0, 0, 0)
|
colors = PackedColorArray(1, 1, 1, 0.5019608, 0, 0, 0, 0)
|
||||||
@ -17,8 +20,6 @@ gradient = SubResource("Gradient_i3pqv")
|
|||||||
fill = 1
|
fill = 1
|
||||||
fill_from = Vector2(0.5, 0.5)
|
fill_from = Vector2(0.5, 0.5)
|
||||||
|
|
||||||
[sub_resource type="Shortcut" id="Shortcut_hqtel"]
|
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody2D" unique_id=1353719775]
|
[node name="Player" type="CharacterBody2D" unique_id=1353719775]
|
||||||
motion_mode = 1
|
motion_mode = 1
|
||||||
script = ExtResource("1_onrkg")
|
script = ExtResource("1_onrkg")
|
||||||
@ -32,6 +33,11 @@ position = Vector2(1, 0)
|
|||||||
shape = SubResource("CapsuleShape2D_i3pqv")
|
shape = SubResource("CapsuleShape2D_i3pqv")
|
||||||
debug_color = Color(0.23987567, 0.6988715, 0.40862384, 0.41960785)
|
debug_color = Color(0.23987567, 0.6988715, 0.40862384, 0.41960785)
|
||||||
|
|
||||||
|
[node name="PlayerReachArea" type="Area2D" parent="." unique_id=1000158753]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerReachArea" unique_id=1228042585]
|
||||||
|
shape = SubResource("CircleShape2D_qhqgy")
|
||||||
|
|
||||||
[node name="PlayerCamera" type="Camera2D" parent="." unique_id=1839930911]
|
[node name="PlayerCamera" type="Camera2D" parent="." unique_id=1839930911]
|
||||||
zoom = Vector2(1.5, 1.5)
|
zoom = Vector2(1.5, 1.5)
|
||||||
editor_draw_screen = false
|
editor_draw_screen = false
|
||||||
@ -42,7 +48,7 @@ radius = 25.0
|
|||||||
max_speed = 100000.0
|
max_speed = 100000.0
|
||||||
debug_enabled = true
|
debug_enabled = true
|
||||||
|
|
||||||
[node name="NavTarget" type="Sprite2D" parent="." unique_id=1224616450]
|
[node name="NavTargetSprite" type="Sprite2D" parent="." unique_id=1224616450]
|
||||||
z_index = 10
|
z_index = 10
|
||||||
texture = SubResource("GradientTexture2D_hqtel")
|
texture = SubResource("GradientTexture2D_hqtel")
|
||||||
|
|
||||||
@ -53,6 +59,7 @@ offset_right = -60.0
|
|||||||
offset_bottom = 30.0
|
offset_bottom = 30.0
|
||||||
|
|
||||||
[node name="PlayerUI" type="CanvasLayer" parent="." unique_id=742234296]
|
[node name="PlayerUI" type="CanvasLayer" parent="." unique_id=742234296]
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="CenterContainer" type="CenterContainer" parent="PlayerUI" unique_id=964838525]
|
[node name="CenterContainer" type="CenterContainer" parent="PlayerUI" unique_id=964838525]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@ -71,5 +78,4 @@ layout_mode = 2
|
|||||||
[node name="EndTurnButton" type="Button" parent="PlayerUI/CenterContainer/VBoxContainer" unique_id=1003182030]
|
[node name="EndTurnButton" type="Button" parent="PlayerUI/CenterContainer/VBoxContainer" unique_id=1003182030]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
shortcut = SubResource("Shortcut_hqtel")
|
|
||||||
text = "End Turn (E)"
|
text = "End Turn (E)"
|
||||||
@ -1,3 +1,3 @@
|
|||||||
@icon("res://assets/icons/ball.svg")
|
@icon("res://assets/icons/ball.svg")
|
||||||
class_name Ball
|
class_name Ball
|
||||||
extends Node2D
|
extends RigidBody2D
|
||||||
|
|||||||
@ -1,3 +1,28 @@
|
|||||||
@icon("res://assets/icons/court.svg")
|
@icon("res://assets/icons/court.svg")
|
||||||
class_name Court
|
class_name Court
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
@onready var key_area: Area2D = %KeyArea
|
||||||
|
@onready var two_point_area: Area2D = %TwoPointArea
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
key_area.connect("body_entered", on_key_area_entered)
|
||||||
|
two_point_area.connect("body_entered", on_two_point_area_entered)
|
||||||
|
key_area.connect("body_exited", on_key_area_exited)
|
||||||
|
two_point_area.connect("body_exited", on_two_point_area_exited)
|
||||||
|
|
||||||
|
func on_key_area_entered(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug(str(body.attributes.player_name) + " has entered the key")
|
||||||
|
|
||||||
|
func on_two_point_area_entered(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug(str(body.attributes.player_name) + " has entered the two-point area")
|
||||||
|
|
||||||
|
func on_key_area_exited(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug(str(body.attributes.player_name) + " has exited the key")
|
||||||
|
|
||||||
|
func on_two_point_area_exited(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug(str(body.attributes.player_name) + " has exited the two-point area")
|
||||||
|
|||||||
@ -7,6 +7,7 @@ extends Resource
|
|||||||
@export var player_name: String
|
@export var player_name: String
|
||||||
@export_range(0.0, 99.0, 1.0, "prefer_slider") var player_number: int
|
@export_range(0.0, 99.0, 1.0, "prefer_slider") var player_number: int
|
||||||
@export var player_position: Globals.PlayerPosition
|
@export var player_position: Globals.PlayerPosition
|
||||||
|
@export_range(150.0, 250.0, 1.0, "prefer_slider") var player_height: float ## Player height in centimetres; determines reach.
|
||||||
@export_group("Abilities")
|
@export_group("Abilities")
|
||||||
@export var speed: float
|
@export var speed: float
|
||||||
@export var reflexes: float
|
@export var reflexes: float
|
||||||
|
|||||||
@ -15,13 +15,10 @@ func _ready() -> void:
|
|||||||
players = get_tree().get_nodes_in_group("players")
|
players = get_tree().get_nodes_in_group("players")
|
||||||
for player in players:
|
for player in players:
|
||||||
player.connect("turn_finished", on_player_turn_finished)
|
player.connect("turn_finished", on_player_turn_finished)
|
||||||
|
player.is_active = false
|
||||||
active_player = players[0] as Player
|
active_player = players[0] as Player
|
||||||
|
|
||||||
|
|
||||||
#func _input(event: InputEvent) -> void:
|
|
||||||
#if event.is_action_pressed("")
|
|
||||||
|
|
||||||
|
|
||||||
## Signal-handlers
|
## Signal-handlers
|
||||||
func on_player_turn_finished() -> void:
|
func on_player_turn_finished() -> void:
|
||||||
print_debug("Moving to the next player in the turn order")
|
print_debug("Moving to the next player in the turn order")
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
@icon("res://assets/icons/player.svg")
|
@icon("res://assets/icons/player.svg")
|
||||||
#@tool
|
|
||||||
class_name Player
|
class_name Player
|
||||||
extends CharacterBody2D
|
extends CharacterBody2D
|
||||||
|
|
||||||
@ -10,7 +9,7 @@ signal turn_finished
|
|||||||
@export var attributes: PlayerAttributes ## The attributes resource that defines the player's abilities, vitals etc.
|
@export var attributes: PlayerAttributes ## The attributes resource that defines the player's abilities, vitals etc.
|
||||||
|
|
||||||
## regular variables
|
## regular variables
|
||||||
var is_active: bool: set = set_active
|
var is_active: bool = false: set = set_active
|
||||||
var player_label_offset: Vector2
|
var player_label_offset: Vector2
|
||||||
|
|
||||||
## 'onready' variables
|
## 'onready' variables
|
||||||
@ -18,38 +17,35 @@ var player_label_offset: Vector2
|
|||||||
@onready var player_camera: Camera2D = $PlayerCamera
|
@onready var player_camera: Camera2D = $PlayerCamera
|
||||||
@onready var player_label: PlayerLabel = $PlayerLabel
|
@onready var player_label: PlayerLabel = $PlayerLabel
|
||||||
@onready var player_nav: NavigationAgent2D = $PlayerNav
|
@onready var player_nav: NavigationAgent2D = $PlayerNav
|
||||||
@onready var nav_target: Sprite2D = $NavTarget
|
@onready var player_reach_area: Area2D = $PlayerReachArea
|
||||||
|
@onready var nav_target_sprite: Sprite2D = $NavTargetSprite
|
||||||
@onready var player_sprite: Sprite2D = $PlayerSprite
|
@onready var player_sprite: Sprite2D = $PlayerSprite
|
||||||
@onready var player_ui: CanvasLayer = $PlayerUI
|
@onready var player_ui: CanvasLayer = $PlayerUI
|
||||||
@onready var end_turn_button: Button = %EndTurnButton
|
#@onready var end_turn_button: Button = %EndTurnButton
|
||||||
|
|
||||||
|
## Overrides
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
## signals
|
_connect_signals()
|
||||||
end_turn_button.connect("button_down", end_turn)
|
#set_player_attributes(attributes)
|
||||||
player_nav.connect("velocity_computed", on_velocity_computed)
|
|
||||||
|
|
||||||
is_active = false
|
|
||||||
|
|
||||||
if attributes:
|
if attributes:
|
||||||
player_label.player_name = attributes.player_name
|
_set_player_label_values(attributes)
|
||||||
player_label.player_number = attributes.player_number
|
_set_player_sprite(attributes.player_texture)
|
||||||
player_label.player_position = attributes.player_position
|
|
||||||
player_sprite.texture = attributes.player_texture
|
|
||||||
|
|
||||||
player_label_offset = player_label.position
|
player_label_offset = player_label.position
|
||||||
|
|
||||||
func _process(_delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
player_label.global_position = global_position + player_label_offset
|
_set_player_label_position()
|
||||||
if is_active:
|
if is_active:
|
||||||
nav_target.global_position = get_global_mouse_position()
|
_set_nav_sprite_position()
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(_delta: float) -> void:
|
||||||
var desired_velocity: Vector2 = global_position.direction_to(player_nav.get_next_path_position()) * attributes.speed ## TODO: this doesn't seem to affect actual movement speed
|
_set_desired_velocity()
|
||||||
player_nav.velocity = desired_velocity
|
if get_last_slide_collision():
|
||||||
#if player_nav.target_position:
|
var collision = get_last_slide_collision()
|
||||||
#player_nav.velocity = global_position.direction_to(player_nav.get_next_path_position())
|
var collider = collision.get_collider()
|
||||||
##var movement_direction =
|
if collider is Ball:
|
||||||
##translate(movement_direction)
|
collider.apply_central_impulse(collision.get_normal() * -2.0)
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if event.is_action_pressed("end_turn"):
|
if event.is_action_pressed("end_turn"):
|
||||||
@ -60,33 +56,66 @@ func _input(event: InputEvent) -> void:
|
|||||||
player_nav.target_position = click_position_global
|
player_nav.target_position = click_position_global
|
||||||
var target_distance = player_nav.distance_to_target()
|
var target_distance = player_nav.distance_to_target()
|
||||||
print_debug("That's %s pixels/cm away" % target_distance)
|
print_debug("That's %s pixels/cm away" % target_distance)
|
||||||
look_at(player_nav.target_position)
|
|
||||||
|
|
||||||
|
|
||||||
## Setters
|
## Setters
|
||||||
func set_active(active: bool) -> void:
|
func set_active(active: bool) -> void:
|
||||||
is_active = active
|
is_active = active
|
||||||
if is_active:
|
if is_active:
|
||||||
print_debug("%s says: 'My turn!'" % attributes.player_name)
|
print_debug("%s says: 'My turn!'" % attributes.player_name)
|
||||||
player_ui.visible = true
|
|
||||||
player_camera.enabled = true
|
player_camera.enabled = true
|
||||||
player_camera.make_current()
|
player_camera.make_current()
|
||||||
nav_target.visible = true
|
nav_target_sprite.visible = true
|
||||||
set_process_input(true)
|
set_process_input(true)
|
||||||
else:
|
else:
|
||||||
print_debug("%s says: 'It's not my turn'" % attributes.player_name)
|
print_debug("%s says: 'It's not my turn'" % attributes.player_name)
|
||||||
player_ui.visible = false
|
|
||||||
player_camera.enabled = false
|
player_camera.enabled = false
|
||||||
nav_target.visible = false
|
nav_target_sprite.visible = false
|
||||||
set_process_input(false)
|
set_process_input(false)
|
||||||
|
|
||||||
## Helper functions/signal handlers
|
## Actions
|
||||||
|
|
||||||
func end_turn() -> void:
|
func end_turn() -> void:
|
||||||
print_debug("%s says: I'd like my turn to end." % attributes.player_name)
|
print_debug("%s says: I'd like my turn to end." % attributes.player_name)
|
||||||
is_active = false
|
is_active = false
|
||||||
turn_finished.emit()
|
turn_finished.emit()
|
||||||
|
|
||||||
|
## Helper functions
|
||||||
|
func _connect_signals() -> void:
|
||||||
|
player_nav.connect("velocity_computed", on_velocity_computed)
|
||||||
|
player_reach_area.connect("body_entered", on_player_reach_area_body_entered)
|
||||||
|
player_reach_area.connect("body_exited", on_player_reach_area_body_exited)
|
||||||
|
|
||||||
|
func _set_desired_velocity() -> void:
|
||||||
|
var desired_velocity: Vector2 = global_position.direction_to(player_nav.get_next_path_position()) * attributes.speed
|
||||||
|
player_nav.velocity = desired_velocity
|
||||||
|
|
||||||
|
func _set_player_label_position() -> void:
|
||||||
|
player_label.global_position = global_position + player_label_offset
|
||||||
|
|
||||||
|
func _set_nav_sprite_position() -> void:
|
||||||
|
nav_target_sprite.global_position = get_global_mouse_position()
|
||||||
|
|
||||||
|
func _set_player_label_values(attributes_resource: PlayerAttributes) -> void:
|
||||||
|
player_label.player_name = attributes_resource.player_name
|
||||||
|
player_label.player_number = attributes_resource.player_number
|
||||||
|
player_label.player_position = attributes_resource.player_position
|
||||||
|
|
||||||
|
func _set_player_sprite(texture: Texture2D) -> void:
|
||||||
|
player_sprite.texture = texture
|
||||||
|
|
||||||
|
## Signal handlers
|
||||||
|
func on_player_reach_area_body_entered(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug((body.attributes.player_name) + " has entered %s's reach area" % attributes.player_name)
|
||||||
|
elif body is Ball:
|
||||||
|
print_debug("The ball has entered %s's reach area" % attributes.player_name)
|
||||||
|
|
||||||
|
func on_player_reach_area_body_exited(body: PhysicsBody2D) -> void:
|
||||||
|
if body is Player:
|
||||||
|
print_debug((body.attributes.player_name) + " has exited %s's reach area" % attributes.player_name)
|
||||||
|
elif body is Ball:
|
||||||
|
print_debug("The ball has exited %s's reach area" % attributes.player_name)
|
||||||
|
|
||||||
func on_velocity_computed(safe_velocity: Vector2) -> void:
|
func on_velocity_computed(safe_velocity: Vector2) -> void:
|
||||||
|
look_at(player_nav.get_next_path_position())
|
||||||
velocity = safe_velocity
|
velocity = safe_velocity
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|||||||
@ -3,3 +3,4 @@ class_name Team
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
@export var attributes: TeamAttributes
|
@export var attributes: TeamAttributes
|
||||||
|
@export var players: Array[Player]
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://dndfw477wwjog"]
|
[gd_scene format=3 uid="uid://dndfw477wwjog"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cfq463kejcp2m" path="res://team.tscn" id="1_7xvty"]
|
[ext_resource type="PackedScene" uid="uid://cfq463kejcp2m" path="res://scenes/team.tscn" id="1_7xvty"]
|
||||||
[ext_resource type="Script" uid="uid://c7dxj0ifl687s" path="res://scripts/custom resources/team_attributes.gd" id="2_rosww"]
|
[ext_resource type="Script" uid="uid://c7dxj0ifl687s" path="res://scripts/custom resources/team_attributes.gd" id="2_rosww"]
|
||||||
[ext_resource type="PackedScene" uid="uid://boqs7k6ia532h" path="res://player.tscn" id="3_8v3ba"]
|
[ext_resource type="PackedScene" uid="uid://boqs7k6ia532h" path="res://scenes/player.tscn" id="3_8v3ba"]
|
||||||
[ext_resource type="Texture2D" uid="uid://btwb84mew7whb" path="res://assets/players/top-down/blue-45.png" id="4_21h5f"]
|
[ext_resource type="Texture2D" uid="uid://btwb84mew7whb" path="res://assets/players/top-down/blue-45.png" id="4_21h5f"]
|
||||||
[ext_resource type="Script" uid="uid://bbey5ttwv5utd" path="res://scripts/custom resources/player_attributes.gd" id="5_bwj7y"]
|
[ext_resource type="Script" uid="uid://bbey5ttwv5utd" path="res://scripts/custom resources/player_attributes.gd" id="5_bwj7y"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cf8i6dbhws3ig" path="res://assets/players/top-down/blue-50.png" id="6_21h5f"]
|
[ext_resource type="Texture2D" uid="uid://cf8i6dbhws3ig" path="res://assets/players/top-down/blue-50.png" id="6_21h5f"]
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
[gd_scene format=3 uid="uid://b7js4xq85ajf7"]
|
[gd_scene format=3 uid="uid://b7js4xq85ajf7"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://cfq463kejcp2m" path="res://team.tscn" id="1_m0gtt"]
|
[ext_resource type="PackedScene" uid="uid://cfq463kejcp2m" path="res://scenes/team.tscn" id="1_m0gtt"]
|
||||||
[ext_resource type="Script" uid="uid://c7dxj0ifl687s" path="res://scripts/custom resources/team_attributes.gd" id="2_qxtr2"]
|
[ext_resource type="Script" uid="uid://c7dxj0ifl687s" path="res://scripts/custom resources/team_attributes.gd" id="2_qxtr2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://boqs7k6ia532h" path="res://player.tscn" id="3_oxqyn"]
|
[ext_resource type="PackedScene" uid="uid://boqs7k6ia532h" path="res://scenes/player.tscn" id="3_oxqyn"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ctakygdw82fs2" path="res://assets/players/top-down/orange-45.png" id="4_dbbjc"]
|
[ext_resource type="Texture2D" uid="uid://ctakygdw82fs2" path="res://assets/players/top-down/orange-45.png" id="4_dbbjc"]
|
||||||
[ext_resource type="Script" uid="uid://bbey5ttwv5utd" path="res://scripts/custom resources/player_attributes.gd" id="5_ssmnd"]
|
[ext_resource type="Script" uid="uid://bbey5ttwv5utd" path="res://scripts/custom resources/player_attributes.gd" id="5_ssmnd"]
|
||||||
[ext_resource type="Texture2D" uid="uid://nwm6exs2vod6" path="res://assets/players/top-down/orange-50.png" id="6_dbbjc"]
|
[ext_resource type="Texture2D" uid="uid://nwm6exs2vod6" path="res://assets/players/top-down/orange-50.png" id="6_dbbjc"]
|
||||||
@ -50,9 +50,6 @@ attributes = SubResource("Resource_hms1j")
|
|||||||
position = Vector2(6284.951, 0)
|
position = Vector2(6284.951, 0)
|
||||||
attributes = SubResource("Resource_jsul0")
|
attributes = SubResource("Resource_jsul0")
|
||||||
|
|
||||||
[node name="PlayerNav" parent="Orange1" index="3" unique_id=1205813043]
|
|
||||||
debug_use_custom = true
|
|
||||||
|
|
||||||
[node name="Orange2" parent="." index="1" unique_id=1623179654 instance=ExtResource("3_oxqyn")]
|
[node name="Orange2" parent="." index="1" unique_id=1623179654 instance=ExtResource("3_oxqyn")]
|
||||||
position = Vector2(3503.8748, 0)
|
position = Vector2(3503.8748, 0)
|
||||||
attributes = SubResource("Resource_ufsyq")
|
attributes = SubResource("Resource_ufsyq")
|
||||||
@ -60,5 +57,3 @@ attributes = SubResource("Resource_ufsyq")
|
|||||||
[node name="Orange3" parent="." index="2" unique_id=964363928 instance=ExtResource("3_oxqyn")]
|
[node name="Orange3" parent="." index="2" unique_id=964363928 instance=ExtResource("3_oxqyn")]
|
||||||
position = Vector2(4278.757, 0)
|
position = Vector2(4278.757, 0)
|
||||||
attributes = SubResource("Resource_nbn31")
|
attributes = SubResource("Resource_nbn31")
|
||||||
|
|
||||||
[editable path="Orange1"]
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user