Contents

Cách thêm đối tượng chuyển động ngẫu nhiên trong Godot

Trong quá trình phát triển trò chơi, các yếu tố ngẫu nhiên và không thể đoán trước có thể góp phần rất lớn vào trải nghiệm chơi trò chơi tổng thể. Một cách cụ thể để giới thiệu một yếu tố như vậy là thông qua các đối tượng chuyển động ngẫu nhiên, giúp bổ sung thêm một lớp tương tác và thử thách.

Người ta có thể sử dụng GDScript, là ngôn ngữ lập trình bản địa của Godot, để đạt được kết quả này khi cộng tác với Godot.

Thiết lập trò chơi Godot của bạn

Để bắt đầu, hãy thiết lập bầu không khí chơi trò chơi hai chiều cơ bản trong công cụ trò chơi Godot bằng cách tạo cảnh 2D mới và kết hợp một

Mã nguồn được sử dụng trong ấn phẩm này có thể được truy cập thông qua một kho lưu trữ GitHub cụ thể, nơi cấp cho người dùng quyền sử dụng nó miễn phí dưới sự bảo trợ của giấy phép MIT.

mô-đun CollisionShape2D sẽ cho phép tương tác với các đối tượng trò chơi thông qua các ranh giới va chạm đã xác định, cũng như thành phần Sprite2D hấp dẫn trực quan sẽ phục vụ như một đại diện thẩm mỹ cho nhân vật người chơi trong môi trường ảo.

Để làm cho nhân vật có cảm giác vận động, người ta có thể sử dụng đoạn mã sau được viết 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)

Để thiết lập tốc độ đồng đều cho hình đại diện của người chơi theo mọi hướng, điều cần thiết là phải giới thiệu một biến có tên là’tốc độ’, biến này sẽ đóng vai trò là vận tốc mặc định của nhân vật khi người dùng nhập vào. Giá trị này có thể được điều chỉnh bằng cách gọi hàm ‘_physics\_process(delta)’, hàm này điều chỉnh chuyển động của nhân vật chính dựa trên bất kỳ thay đổi nào được thực hiện đối với đầu vào của cần điều khiển hoặc bàn phím. Bằng cách bình thường hóa tốc độ và hướng của nhân vật trước khi áp dụng các sửa đổi này, chúng tôi tạo ra trải nghiệm có nhịp độ đồng đều bất kể quỹ đạo đã chọn của người chơi.

/vi/images/simple-player-in-godot-game.jpg

Tạo đối tượng tĩnh với StaticBody2D

Để tạo điều kiện tương tác giữa nhân vật chính của trò chơi và môi trường của nó, điều cần thiết là tạo các thực thể động trong Unity3D mà người dùng có thể thao tác. Một cách để đạt được điều này là thông qua việc sử dụng thành phần StaticBody2D được cung cấp bởi bộ công cụ Trình kết xuất lưới của Unity. Tính năng này cho phép các nhà phát triển gán các thuộc tính vật lý và máy va chạm cho các yếu tố khác nhau trong cảnh của họ, cho phép họ mô phỏng các tương tác với các đối tượng này một cách hiệu quả. Bằng cách tận dụng sức mạnh của StaticBody2D, các nhà thiết kế được trao quyền để biến tầm nhìn sáng tạo của họ thành hiện thực trong một thế giới ảo đắm chìm.

 extends StaticBody2D

func _ready():
    var collision_shape = CollisionShape2D.new()
    collision_shape.shape = RectangleShape2D.new()
    add_child(collision_shape) 

Thêm thuật toán chuyển động ngẫu nhiên cho các đối tượng tĩnh

Để giới thiệu yếu tố không thể đoán trước trong trò chơi của bạn, yếu tố chủ yếu bao gồm các yếu tố cố định, người ta có thể triển khai hệ thống chuyển động ngẫu nhiên thô sơ bằng cách sử dụng phương pháp tiếp cận dựa trên cơ hội đơn giản.

 extends StaticBody2D

var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value,value).normalized()

func _physics_process(delta):
    position \+= direction * speed * delta 

Để thấm nhuần thực thể đứng yên của bạn với một vận tốc cụ thể, vui lòng chỉ định tốc độ của nó. Ngoài ra, hãy thiết lập hướng Vector2 và khởi tạo nó bằng cách tạo ngẫu nhiên các số trong phạm vi-1 và 1 cho cả hai thứ nguyên dưới dạng giá trị trục.

Trong chức năng xử lý vật lý, tăng vị trí của đối tượng bằng cách nhân vectơ biểu thị hướng của nó với giá trị vô hướng của tốc độ và đồng bằng thời gian, do đó di chuyển đối tượng dọc theo quỹ đạo của nó theo vận tốc đã chỉ định.

Vị trí và quỹ đạo ngẫu nhiên cho các đối tượng tĩnh

Để tăng cường yếu tố ngẫu nhiên và tự phát, bạn không chỉ nên thay đổi vận tốc và hướng của các yếu tố hình ảnh mà còn giới thiệu sự đa dạng về điểm xuất phát và mô hình quỹ đạo của chúng.

 extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value,value).normalized()

func _ready():
    var val1 = randf_range(0, get_viewport().size.x)
    var val2 = randf_range(0, get_viewport().size.y)
    position = Vector2(val1, val2)

func _physics_process(delta):
    position \+= direction * speed * delta 

Trong triển khai này, vận tốc của đường đạn được đặt thành một giá trị ngẫu nhiên nằm trong khoảng từ 50 đến 250 pixel mỗi giây trong quá trình khởi tạo bên trong phương thức \_ready(). Ngoài ra, vị trí bắt đầu của đạn được chọn ngẫu nhiên trong ranh giới của kích thước canvas. Sau đó, chuyển động của đạn được duy trì bằng cách cập nhật vị trí của nó dựa trên quá trình xử lý vật lý trong phương pháp \_physics\_ process(delta), tương tự như các lần lặp trước.

/vi/images/random-moving-objects.jpg

Điều chỉnh tốc độ, hướng và tính ngẫu nhiên

Để tăng cường khả năng tương tác và đắm chìm trong trò chơi, người ta có thể điều khiển các tham số khác nhau như vận tốc, hướng và tính không thể đoán trước của chuyển động đối với các yếu tố đứng yên thông qua việc sử dụng GDScript. Điều này cho phép tạo ra các cơ chế điều khiển động có thể làm phong phú thêm trải nghiệm chơi trò chơi.

 extends StaticBody2D

var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value,value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5

func _ready():
    var val1 = randf_range(0, get_viewport().size.x)
    var val2 = randf_range(0, get_viewport().size.y)
    position = Vector2(val1, val2)

func _physics_process(delta):
    randomize_speed_and_direction()
    position \+= direction * speed * delta

func randomize_speed_and_direction():
    if randf() < speed_variation_rate:
        speed = randf_range(50, 150)

    if randf() < direction_variation_rate:
        direction = Vector2(value, value).normalized() 

Các tính năng bổ sung cho các đối tượng chuyển động ngẫu nhiên của bạn

Cân nhắc kết hợp nhiều cơ chế tiên tiến để tinh chỉnh và làm phong phú thêm trải nghiệm chơi trò chơi của bạn. Một vài khả năng bao gồm:

Sự biến đổi màu sắc

Tương tự như vậy, để giới thiệu một yếu tố trực quan và sống động hơn trong trò chơi của bạn, người ta cũng có thể điều chỉnh tốc độ và hướng của các yếu tố hình ảnh. Điều này có thể đạt được bằng cách điều chỉnh các thuộc tính màu của các họa tiết bằng cách sử dụng thuộc tính modulate.

 sprite.modulate = Color(randf(), randf(), randf()) 

Kích thước thay đổi

Việc kết hợp các biến thể ngẫu nhiên về kích thước của các yếu tố trò chơi sẽ tạo ra một lớp phức tạp và không chắc chắn hơn nữa, yêu cầu người chơi phải liên tục sửa đổi chiến lược của họ để đáp ứng với những thay đổi này. Các thuộc tính tỷ lệ của từng vật phẩm có thể được sửa đổi để đạt được hiệu ứng này, cung cấp thêm một thử thách để người chơi vượt qua.

 sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0)) 

Sinh sản đối tượng

Thay vì duy trì một số lượng định trước các thực thể chuyển động linh hoạt, hãy cân nhắc kết hợp một cơ chế để tạo các đối tượng bổ sung theo định kỳ dựa trên các tiêu chí cụ thể hoặc các sự kiện định kỳ. Cách tiếp cận như vậy sẽ đưa ra một thách thức bổ sung bằng cách buộc người chơi phải sửa đổi chiến thuật của họ để đáp ứng với dòng liên tục của các yếu tố mới lạ trong trường hình ảnh.

Tuổi thọ đối tượng

Để duy trì màn hình trực quan gọn gàng và duy trì tính mới của trải nghiệm chơi trò chơi, các đối tượng trong trò chơi có thể tự hủy sau một khoảng thời gian xác định trước.

Tương tác

Kết hợp các yếu tố tương tác trong lối chơi là một ý tưởng tuyệt vời. Các tương tác như va chạm với đồ vật có thể dẫn đến nhiều hiệu ứng khác nhau như tăng điểm của người chơi, thay đổi tốc độ của họ hoặc sửa đổi chính môi trường trò chơi. Ngoài ra, việc thực hiện các hành động như cho phép người chơi nhảy khi họ đang đứng trên một nền tảng sẽ bổ sung thêm một khía cạnh tương tác khác.

Các phương pháp hay nhất để thêm các đối tượng di chuyển ngẫu nhiên

Để tạo trải nghiệm sống động và hấp dẫn khi kết hợp các yếu tố chuyển động ngẫu nhiên trong trò chơi, việc tuân thủ một số nguyên tắc được đề xuất là rất quan trọng để đạt được kết quả tối ưu:

Cân nhắc hiệu suất

Mặc dù việc kết hợp nhiều yếu tố trong trò chơi có thể hấp dẫn, nhưng cần lưu ý rằng việc thêm nhiều đối tượng hơn sẽ làm tăng gánh nặng tính toán cho công cụ chơi trò chơi. Do đó, điều quan trọng là phải đánh giá hiệu suất của trò chơi trên phần cứng dự định để đảm bảo rằng không xảy ra hiện tượng xuống cấp.

Cân bằng tính ngẫu nhiên và khả năng chơi

Tạo sự cân bằng giữa các yếu tố ngẫu nhiên và cách chơi có thể dự đoán được là rất quan trọng để tạo ra trải nghiệm hấp dẫn mà không trở nên quá tải hoặc khó chịu. Cần tiến hành thử nghiệm kỹ lưỡng các thông số khác nhau để đạt được trạng thái cân bằng này, đảm bảo rằng cả thách thức và sự thích thú đều có mặt ở mức độ phù hợp.

Va chạm và Phản hồi

Đảm bảo xử lý va chạm đúng cách là rất quan trọng trong việc ngăn chặn sự tương tác không lường trước được giữa nhân vật của người chơi và các đối tượng khác trong trò chơi. Vì chuyển động ngẫu nhiên có thể dẫn đến nhiều tình huống va chạm tiềm ẩn, điều quan trọng là phải lường trước những sự cố như vậy trong quá trình phát triển và tiến hành thử nghiệm kỹ lưỡng để giải thích cho chúng.

Hình ảnh rõ nét

Để tăng cường khả năng hiển thị của các đối tượng chuyển động ngẫu nhiên trong trò chơi, điều quan trọng là chúng phải tương phản hiệu quả với cả nền và bất kỳ yếu tố không tương tác nào hiện diện trên màn hình. Điều này cho phép người chơi dễ dàng hiểu được tình trạng chơi hiện tại và hình thành các phản ứng chiến lược khi cần thiết. Một cách tiếp cận khả thi để đạt được hiệu ứng này liên quan đến việc kết hợp các tín hiệu hình ảnh hoặc tín hiệu âm thanh đặc biệt dưới dạng hiệu ứng âm thanh, giúp phân biệt các đối tượng này với môi trường xung quanh và do đó nâng cao nhận thức của người chơi.

Tác động của các đối tượng di chuyển ngẫu nhiên đối với trò chơi Godot của bạn

Các yếu tố di chuyển ngẫu nhiên trong trò chơi Godot có thể nâng cao đáng kể mức độ tương tác của nó bằng cách tạo ra một bầu không khí mới lạ và khó đoán. Sự sắp xếp thay đổi liên tục của các yếu tố này góp phần tạo nên giá trị chơi lại của trò chơi, đảm bảo rằng mỗi lần chơi mới mang lại trải nghiệm mới cho người chơi.

Ngoài ra, do quỹ đạo của các yếu tố di động là không thể đoán trước, nên người chơi bắt buộc phải duy trì mức độ tập trung và sự nhanh nhẹn cao độ để di chuyển hiệu quả trong bối cảnh trò chơi.