Cách thêm đổ bóng và ánh sáng sinh động trong Godot

Ánh sáng động và đổ bóng có thể nâng cao chất lượng hình ảnh và trải nghiệm gameplay của các game Godot. Chúng thêm chiều sâu, bầu không khí và tính chân thực, khiến thế giới game hấp dẫn, cuốn hút hơn.

Lập trình game

Với các tính năng mạnh mẽ của Godot như CanvasModulate PointLight2D, việc tạo, tùy biến ánh sáng động & đổ bóng là một nhiệm vụ dễ dàng.

Thiết lập game Godot

Trước khi đi sâu vào cách làm ánh sáng động, thiết lập game 2D cơ bản trong game engine Godot. Tạo một cảnh mới và thêm CharacterBody2D cho người chơi.

Bên trong CharacterBody2D, thêm CollisionShape2D với hình chữ nhật và Sprite2D để đại diện cho nhân vật người chơi. Ngoài ra, tạo một số nền tảng bằng node StaticBody2D.

Giờ, triển khai chuyển động người chơi và va chạm với các ranh giới của màn hình bằng GDScript:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
    var velocity = Vector2()

    if Input.is_action_pressed('ui_right'):
        velocity.x += 1

    if Input.is_action_pressed('ui_left'):
        velocity.x -= 1

    if Input.is_action_pressed('ui_down'):
        velocity.y += 1

    if Input.is_action_pressed('ui_up'):
        velocity.y -= 1

    velocity = velocity.normalized() * speed
    move_and_collide(velocity * delta)

Với code này, người chơi có thể di chuyển sang trái, phải, lên và xuống, trong khi bị giới hạn bởi các cạnh màn hình.

Game tạo trong Godot

Làm tối phần còn lại của cảnh

Để đạt được hiệu ứng ánh sáng động, bạn cần làm tối phần còn lại của cảnh, ngoại trừ vùng được các nguồn sáng chiếu tới. Bạn có thể làm việc này bằng cách dùng tính năng CanvasModulate của Godot.

extends Node2D

const DARKNESS = 0.7

func _ready():
    var canvas_modulate = CanvasModulate.new()
    canvas_modulate.color = Color(0, 0, 0, DARKNESS)
    add_child(canvas_modulate)

Gắn tập lệnh này vào Node2D đã thêm vào phần gốc của cảnh. Node CanvasModulate sẽ áp dụng một lớp phủ màu đen bán trong suốt, làm tối toàn bộ cảnh, ngoại trừ khu vực được ánh sáng chiếu tới.

Tạo một biến DARKNESS không đổi, quyết định mật độ bóng tối đã áp dụng cho cảnh. Bằng cách điều chỉnh giá trị của DARKNESS, bạn có thể kiểm soát mức độ tối của cảnh khi không được chiếu sáng. Một giá trị cao hơn sẽ cho cảnh tối hơn, còn giá trị thấp hơn cho cảnh sáng hơn.

Tạo bóng tối trong game Godot

Đổ bóng ánh sáng

Để tạo đổ bóng, bạn cần thiết lập node LightOccluder2D trên vật cản chặn ánh sáng. Ví dụ, nếu có tường, nền tảng hay đối tượng khác cần đổ bóng, thêm LightOccluder2D vào từng thành phần.

Tạo node LightOccluder2D và điều chỉnh hình dạng của nó khớp với hình dạng của vật cản trong game. Bạn cũng có thể điều chỉnh thuộc tính của phần che khuất như polygon, segment để tinh chỉnh chuyển động của bóng đổ.

Thêm ánh sáng đa hướng

Giờ thêm node PointLight2D với một cấu trúc đại diện cho nguồn ánh sáng. Đèn điểm tỏa ánh sáng ra mọi hướng và tạo hiệu ứng chiếu sáng chân thực.

extends PointLight2D

var light_color = Color(1, 1, 0.8)

func _ready():
    energy = 2.5
    color = light_color

Bạn có thể tùy biến thuộc tính kiểm soát phạm vi và màu sắc của đèn tỏa ra bằng PointLight2D.

Bạn cũng có thể tạo hoặc nhập kết cấu đèn tùy chỉnh để xác định hình dạng và hình ảnh của nguồn sáng. Nó có thể là một hình tròn đơn giản hay hình dạng phức tạp hơn, phụ thuộc vào bầu không khí bạn muốn tạo.

Để áp dụng họa tiết cho node PointLight2D, hãy làm theo những bước sau:

  1. Chọn node PointLight2D trong cây cảnh.
  2. Trong bảng Inspector, xác định thuộc tính Texture trong phần Texture.
  3. Click box texture trống và chọn họa tiết đèn mong muốn từ trình duyệt file.

Giờ nguồn đèn sẽ tỏa sáng với hình dạng và màu sắc được xác định trước, thêm hiệu ứng hình ảnh bắt mắt cho ánh sáng và đổ bóng sinh động.

Trên đây là cách tạo đổ bóng và ánh sáng động cho game trong Godot. Hi vọng bài viết hữu ích với các bạn.

Thứ Ba, 22/08/2023 13:57
51 👨 118
0 Bình luận
Sắp xếp theo