A kezdetek

G-Ball
sztrovacsek
2021-03-22 · 22:18
Először is szükség van egy pályára, itt lesznek majd a mérkőzések. Ez egyelőre csak egy téglalap körülvéve egy fallal (StaticBody), hogy a labda és a játékosok ne tudjanak elkóborolni.


A játékosok egy alap "Player" objektumból származnak, így gyorsan lehet létrehozni játékosokat egyedi értékekkel (súly, sebesség, rúgás ereje/pontossága, stb.). A játékosokat billentyűzettel és egérrel lehet irányítani: az egérmutató adja meg az irányt, a billentyűzeten pedig irányíthatjuk hogy a mutató felé, vagy azzal ellentétes irányba mozogjon a játékos. 

func get_input():
    look_at(get_global_mouse_position())
    velocity = Vector2()

    if Input.is_action_pressed('ui_down'):
        velocity = Vector2(-speed, 0).rotated(rotation)
    if Input.is_action_pressed('ui_up'):
        velocity = Vector2(speed, 0).rotated(rotation)

func _physics_process(delta):
    if current:
        get_input()
        velocity = move_and_slide(velocity)


A játékosok közt a görgővel kattintva lehet váltani - az egérmutatóhoz legközelebb lévő játékos lesz aktív.

func _input(event):
    if Input.is_action_just_released("mb_middle"):
        select_new_player()

func select_new_player():
    var player_ids = get_tree().get_nodes_in_group("player")
    var nearest_player = player_ids[0]

    for player_id in player_ids:
        var mp = get_global_mouse_position()
        if player_id.global_position.distance_to(mp) < nearest_player.global_position.distance_to(mp):
            nearest_player = player_id

    nearest_player.current = true


Egyelőre nem túl sok, de valahol el kell kezdeni. A következő részben már remélhetőleg labda is lesz. :D