Cách thêm chuyển động người chơi trong Godot bằng GDScript

Chuyển động của người chơi đóng một vai trò quan trọng trong việc làm game Godot hấp dẫn hơn. Dưới đây là cách triển khai nó.

Game mario

Chuyển động của người chơi là một khía cạnh cơ bản trong việc sáng tạo game hấp dẫn bằng Gotdot Game Engine. Chuyển đọng người chơi cho phép người dùng kiểm soát nhân vật, khám phá thế giới và tương tác với những thành phần bên trong môi trường.

Thiết lập game Godot

Để bắt đầu, tạo một dự án 2D mới trong Godot Game Engine. Sau đó, làm theo những bước này để thêm chuyển động người chơi vào game.

Tạo cảnh mới bằng cách click chuột phải vào bảng FileSystem, rồi chọn New Folder và đặt tên nó là Scenes. Bên trong thư mục Scenes, click chuột phải và tạo cảnh 2D mới. Lưu nó với tên phù hợp, ví dụ: Player.tscn.

Thêm node CharacterBody2D vào cảnh bằng cách click nút bấm Add Node và chọn CharacterBody2D từ thư viện node.

Với node CharacterBody2D đã chọn, click Add Child Node để thêm CollisionShape2D. Điều chỉnh hình dạng của CollisionShape2D khớp với kích thước của người chơi. Bạn có thể dùng hình chữ nhật là đơn giản nhất.

Tiếp theo, thêm thành phần Sprite2D vào node CharacterBody 2D, rồi chọn một sprite phù hợp cho nhân vật người chơi.

Tạo game bằng Godot

Thêm chuyển động người chơi bằng bàn phím

Giờ bạn có thể thêm chuyển động của người chơi bằng cách nhập phim vào script Player.gd.

Mở rộng node CharacterBody2D, đặt tốc độ di chuyển và lấy input từ các phím mũi tên (ui_left, ui_right, ui_up, ui_down). Tính vận tốc di chuyển dựa trên hướng đầu vào, chuẩn hóa nó, rồi chuyển người chơi bằng hàm move_and_collide bằng phương thức _physics_process.

extends CharacterBody2D
 
var speed = 300
 
func _physics_process(delta):
    var input_dir = Vector2.ZERO
    if Input.is_action_pressed("ui_left"):
        input_dir.x -= 1
    if Input.is_action_pressed("ui_right"):
        input_dir.x += 1
    if Input.is_action_pressed("ui_up"):
        input_dir.y -= 1
    if Input.is_action_pressed("ui_down"):
        input_dir.y += 1
 
    velocity = input_dir.normalized() * speed
    move_and_collide(velocity * delta)

Thêm xoay vòng

Để người chơi đối mặt với hướng di chuyển, bạn có thể thêm xoay vòng cho người chơi. Update tập lệnh Player.gd như sau:

extends CharacterBody2D
 
@export var speed = 400
@export var rotation_speed = 1.5
 
var rotation_direction = 0
 
func get_input():
    rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
    velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed
 
func _physics_process(delta):
    get_input()
    rotation += rotation_direction * rotation_speed * delta
    move_and_slide()

Người chơi sẽ xoay theo hướng di chuyển. Tốc độ xoay có thể được điều chỉnh bằng biến rotation_speed.

Tạo game Godot

Thêm chuyển động người chơi bằng chuột

Giờ bạn có thể triển khai chuyển động của người chơi bằng click chuột để di chuyển nhân vật sang vị trí được click hoặc làm người chơi đối mặt với con trỏ chuột:

extends CharacterBody2D
 
@export var speed = 300
 
func _physics_process(delta):
    if Input.is_action_just_pressed("click"):
        var target_position = get_global_mouse_position()
        var direction = (target_position - global_position).normalized()
        velocity = direction * speed * delta
        move_and_collide(velocity)

Trong code này, người chơi sẽ di chuyển về vị trí click chuột bất cứ khi nào tác vụ click được kích hoạt. Tốc độ của người chơi có thể được kiểm soát bằng biến speed.

Ngoài ra, bạn cũng có thể triển khai xoay vòng dựa trên chuột như sau:

extends CharacterBody2D
 
func _physics_process(delta):
    var mouse_position = get_global_mouse_position()
    var target_direction = (mouse_position - global_position).angle()
    rotation = target_direction

Thế là xong! Chúc các bạn thành công!

Chủ Nhật, 20/08/2023 16:53
31 👨 428
0 Bình luận
Sắp xếp theo