Tạo 2D Platformer Game với Godot] Phần 8: Thiết kế kẻ thù

Trong phần trước mình đã hướng dẫn bạn cách tạo một con kẻ thù cơ bản nhất, thì trong phần này mình sẽ chỉ các bạn cách để kẻ thù di chuyển trên 1 bề mặt nổi.

Kẻ thù

Với cái bề mặt như trên, mình đảm bảo rằng khi con kẻ thù của bạn di chuyển tới một trong hai góc ngoài thì nó sẽ bị rớt xuống mà thường các game platformet là khi nó di chuyển tới góc nó sẽ quay trở lại như và chạm vào cái tường ở phần trước ấy.

Cho nên trong phần này mình sẽ hướng dẫn bạn cách làm điều này.

Add node

Đầu tiên, bạn thêm cho mình một node mới là RayCast2D ( đây là node dùng để truy vấn các mục tiêu va chạm với tia ).

Đây chính là tia raycast  và mình sẽ sử dụng nó để kiểm tra xem nếu đã tới cái góc thì mình sẽ kêu con kẻ thù quay lại.

Mình sẽ chỉnh lại cho nó ngắn hơn và bật nó lên.

 

func _physics_process(delta):
    
    chuyendong.x = tocdo * huong_dichuyen
    chuyendong.y += trongluc
    chuyendong = move_and_slide(chuyendong,Vector2.UP)
    animation.play("dichuyen")
    
    if is_on_wall():
        huong_dichuyen = huong_dichuyen * -1
        scale.x = scale.y * huong_dichuyen
    
    if $RayCast2D.is_colliding() == false:
        huong_dichuyen = huong_dichuyen * -1
        scale.x = scale.y * huong_dichuyen

Ở đây, mình chỉ thêm 3 dòng code thôi chứ không thêm gì nhiều cả.

Đầu tiên, dòng if:

Đây là kết quả sau khi mình chạy game.

Cách hoạt động

Nếu bạn chưa hiểu thì mình sẽ giải thích cụ thể hơn ở đây nha.

Đây là cái con kẻ thù khi nó chưa ra góc, và cái Raycast nó đang va chạm với tilemap như trong hình.

Còn đây là kẻ thù khi ra tới góc, bạn thấy đó cái raycast đã ra khỏi bên ngoài cái tilemap ( raycast va chạm tính ở góc nhọn của cái mũi tên), khi nó ra ngoài rồi là nó sẽ không va chạm với cái gì nữa mà ở trong phần script mình đã thêm 1 đoạn if để kiểm tra nếu như nó không va chạm thì quay lại.

Tổng Kết

Vậy là mình đã hướng dẫn bạn xong cách tạo 1 con nhân vật cơ bản nhất, ở phần tiếp theo sẽ là di chuyển giữa level, giết kẻ thù.

 

Đánh giá post
Exit mobile version