Featured Post

[Đánh Giá] Inmotion Hosting: Dịch vụ chăm sóc khách hàng xuất sắc

Mình đã sử dụng Inmotion Hosting vài năm nay. Từ ngày đầu tiên, mình đã rất ấn tượng với những tính năng như FREE SSD, Unlimited Website, Un...

Ai2 Learning | Tạo quái vật tự động đuổi khi đến gần


Trong bài học lần này, tôi sẽ hướng dẫn các bạn tạo lên 1 con boss với khả năng phát hiện ra chúng ta khi chúng ta mon men đến gần nó trong 1 khoảng cách nhất định. Còn khi chúng ta đi cách xa nó thì nó lại không phát hiện ra chúng ta nữa. Đây có thể coi là 1 bài học nâng cao 1 chút.
Trước khi bắt đầu tôi muốn ôn lại cho các bạn 1 chút về toán học, thực ra tôi không giỏi toán. Chỉ là yêu cầu của bài này cần phải biết cách tính khoảng cách giữa 2 điểm thì mới có thể đặt điều kiện cho con quái vật đuổi theo chúng ta khi ta tiến vào địa phận của nó được nên tôi mới tìm hiểu về công thức này. Chứ trước kia toán tôi lười học lắm. hehe.

Công thức tính khoảng cách giữa 2 điểm
Giả sử chúng ta có 2 điểm A và B có tọa độ lần lượt là . Vậy để tính khoảng cách giữa 2 điểm này ta sử dụng công thức sau:



Tương tự chúng ta có tọa độ của người chơi và tọa độ của con boss. Chúng ta dựa vào công thức trên để tính toán khoảng cách hiện tại giữa boss và nhân vật :))

Danh sách các components sử dụng
ComponentsPalette groupName
CanvasDrawing and animationCanvas1
ImageSprite (5)Drawing and animationObj_Monster, Obj_Player, btn_Left, btn_Right, obj_Detected
Clock (3)SensorsPlayer_Moving, Monster_Animation, Cheking_Distance
SoundMediaSound1
LabelUser InterfaceLabel1

Danh sách các Blocks đặc biệt sử dụng
BlocksDrawerPurpose
Square rootMathLấy căn bậc 2
JointextGộp nhiều chuỗi hay biến tạo thành 1 chuỗi
if...thenControlĐặt điều kiện cho 1 sự việc nào đó
roundMathLàm tròn giá trị thập phân
to Caculator_DistanceProcedureHàm tính khoảng cách giữa player với monster
TouchDownImageSpriteSự kiện xảy ra khi nhấn vào
TouchUpImageSpriteSự kiện xảy ra khi nhả tay rao

Gợi ý phương pháp thực hiện
- Sử dụng label1 đưa vào trong When Screen1.Initialize để cho hiển thị chiều rộng và chiều cao thực tế của screen.
- Sau khi đã biết được chiều rộng và cao chính xác của Screen, đưa Canvas vào và set witdh với height theo chiều rộng và chiều cao của screen mà ta vừa lấy được từ bước 1.
2 bước bên trên nhằm giúp cho việc sắp xếp bố cục, cũng như bố trí vị trí các phần tử của chúng ta được dễ dàng và chính xác hơn.
- Trước hết ta sẽ xử lý đến phần chuyển động của nhân vật khi nhấn phím điều khiển trái và điều khiển phải. Khi ta nhấn thì nhân vật sẽ chạy về hướng tương ứng đồng thời thay đổi trạng thái hình ảnh thành hình ảnh đang chuyển động. Nhân vật chuyển động được bằng clock Player_Moving. Khi nhả tay khỏi nút nhấn thì clock Player_Moving sẽ dừng hoạt động và nhân vật sẽ đứng yên.
- Tiếp đến ta sử dụng clock Monster_Animation để tạo hiệu ứng quái vật nhấp nhổm giống như đang bay.
- Tạo 1 hàm với tên gọi là Distance_caculator để tính toán khoảng cách giữa quái vật và nhân vật dựa theo công thức mà tôi cung cấp bên trên (được làm tròn kết quả bằng block round
- Cuối cùng sử dụng clock Checking_Distance để luôn luôn kiểm tra xem khoảng cách giữa nhân vật và quái vật đã đạt đến mức đặt ra chưa để cho quái vật đuổi theo. Nếu ngoài phạm vi đặt ra quái vật đứng lại và trở lại trạng thái ban đầu.

Trên đây là toàn bộ những gì bao gồm trong bài học lần này. Chi tiết về bài học các bạn theo dõi video hướng dẫn bên trên nhé! Các bạn có thể tải về file nguồn cũng như file hình ảnh hoặc file block trong bài học bằng các link bên dưới!
DOWNLOAD (pass: chiaseonline)
Image (zip)Audio (zip)Block (png)Project (aia)
DownloadNoneDownloadDownload
Nếu link hỏng, bạn vui lòng gửi đường link bài viết này tới địa chỉ mail : hao3793@gmail.com để tôi check lại nhé !
[video]https://www.youtube.com/embed/NloczT2ehpg[/video]
Nếu các bạn thấy hữu ích, đừng ngại ngần chia sẻ bài này tới bạn bè của các bạn! Nếu bạn có câu hỏi gì hãy đặt câu hỏi ngay tại đây, tôi sẽ trả lời sớm nhất có thể! Nếu có thiếu sót gì, các bạn hãy đóng góp ý kiến để những bài hướng dẫn sau của tôi hoàn thiện hơn nhé !!!

NOTE: Nội dung trên blog thuộc bản quyền của Chia sẻ Online. Vui lòng để lại nguồn khi bạn muốn sao chép! Xin cảm ơn :)
[left-sidebar]

0 nhận xét:

Đăng nhận xét