Mọi người có lẽ đều quen biết node Delay để dừng flow logic trong blueprint, tuy nhiên khi sử dụng trong BlueprintTask cho hành vi AI thì dường như nó không hoạt động. Thể làm thế nào để delay một hay nhiều chuỗi logic trong Task ?
Cùng coi ví dụ một Task setup dưới đây. Trước hết cần 2 event sau:
Event Execute AI
Event Tick AI
Nếu bạn không biết tìm Event trên ở đâu thì các bạn tìm đến Override ở vùng Functions
Sau đó tiếp tục tạo 2 biến float lần lượt:
- CurrentDelay: sẽ lưu thời gian delay hiện tại, thay đổi theo tick
- Delay: thời gian delay mặc định tối đa. Khi sửa ta sẽ sửa giá trị này
Đối với Delay, tick chọn Instance Editable để có thể sửa trực tiếp trên Task khi đặt ở BehaviorTree.
Khi Event Receive Execute AI được gọi, ta set giá trị ban đầu cho biến CurrentDelay:
Kế đến, ở Event Receive Tick AI, ta chỉ việc giảm giá trị CurrentDelay theo từng tick cho tới khi giá trị bé hơn hoặc bằng 0:
Như vậy là đã xong Delay cho Task. Khi Task được gọi xong nhớ lưu ý Finish Execute Success để Task không kẹt nhé.
Comments