View Code? Open in Web Editor
NEW
Survival, endless game
Home Page: https://play.google.com/store/apps/details?id=com.SE1615_G5.FlastSurvival
C# 46.90%
ShaderLab 45.24%
HLSL 7.86%
flastsurvival's People
Stargazers
Watchers
flastsurvival's Issues
Tạo 2 folder để dành cho các item theo đường dẫn sau: "Assets\Resources\Sprites"
Tạo Sprite cho đạn của súng theo đường dẫn sau: "Assets/Resources/Sprites/Bullets"
Chụp lại folder Bullets gồm các sprite của đạn.
Yêu cầu phải có prefab hoặc ảnh của nhân vật trước.
Kéo thả Prefab hoặc hình thù playable character tương ứng với panel đã có sẵn trong Choose Character Scene .
Chụp lại screen sau khi làm xong.
Tạo Sprite cho các loại súng.
Cho tất cả Sprite vào trong đường dẫn sau: "Assets/Resources/Sprites/Guns" .
Chụp lại folder Guns gồm các Sprite đã tạo.
Mỗi Enemy sẽ có các thông số riêng khi spawn random (thông số đã có trên doc).
Khi nhận phải đạn được bắn từ player sẽ giảm máu dần về 0. Máu về 0 sẽ Destroy().
Record lại video sau khi làm xong
Vẽ và cắt ảnh (Tùy cách làm) các items support cho player.
Sau đó cho hết vào folder SupportItems trong đường dẫn: "Assets\Resources\Sprites\SupportItems" .
Tạo 1 quả bóng (giả tưởng là nhân vật) kèm thêm 1 khẩu súng (lấy tạm 1 cái square)
Tạo 1 vài quả bóng (Giả tưởng là kẻ địch), kéo thả vào trong scene.
Cho 1 quả bóng gần nhất và chạy game, súng nhân vật phải aim đến bóng gần nhất.
Sau đó thay đổi vị trí các quả bóng, chạy lại game để test code.
Record lại video demo.
Sau đó bỏ xóa tất cả mọi thứ, chỉ giữ lại Script đã code.
Thanh health bar màu xanh (green), khi bị tấn công sẽ giảm máu dần và phần bị mất máu sẽ có màu đỏ.
Tạm thời test bằng cách kéo thả prefab vào screen, cho full máu là 100, sau 2 giây trừ 10 máu.
Máu giảm về <= 0 thì biến mất (chết).
Thanh máu sẽ phải đi theo Enemy.
Record lại video sau khi làm.
Tìm cách khiến Camera di chuyển theo người chơi. Trong cheatsheet đã có, có thể tham khảo thêm trên mạng, tìm phần Camera Follow.
Test sử dụng bàn phím để di chuyển trước (record lại video), sau đó test trên mobile (record lại video).
Tạo "Pull Request" kèm theo 2 video trên.
Nếu phải tải Asset từ bên ngoài thì để vào trong folder 3rd Party .
bandicam.2023-03-10.22-23-29-828.mp4
Khi bị player tấn công gần hoặc xa sẽ giảm máu.
Đối với đạn của mỗi súng sẽ cho 1 tag. VD: "PistolBullet, AssaultRifleBullet..." để trừ máu khi bị bắn bởi mỗi loại súng khác nhau.
Tạm thời cho player cầm 1 khẩu pistol bắn vào enemy, máu trừ đi, health bar cũng trừ dần đi. Sau đó chạy lại game nhưng player cầm loại súng khác.
Record lại video sau khi làm xong.
Có thể test trên IOS hoặc Android
Tạo folder là 3rd Party (nếu đã có thì ko cần tạo) trong folder Assets .
Tất cả các asset như JoyStick hay Camera follow player (nếu phải tải về) sẽ được để trong này.
Phải có UI của Play Game Scene trước
Cho map vào scene Play Game để chơi
Ko cần record lại
Yêu cầu phải có tự động ngắm đến kẻ địch gần nhất trước
Lấy tạm 1 Square để làm súng.
Lấy tạm 1 Circle để làm đạn, khi bắn render ra 1 hình sprite bất kỳ của đạn ("Assets/Resources/Sprites/Bullets" ).
Khi bấm button bắn, đạn sẽ được bắn theo hướng vector của súng đang chỉ tới hướng nào.
Điều chỉnh tốc độ bắn cho phù hợp.
Thêm Collider cho Enemy và Playable Character .
Destroy bullet khi ra khỏi màn hình, va chạm với kẻ địch hoặc chướng ngại vật (ko cần animation khi đạn bị destroy ).
Những phần cần test :
Đạn bắn theo hướng kẻ địch.
Đạn tự hủy khi va chạm và vật thể bất kỳ hoặc bay ra ngoài màn hình.
Record lại video sau khi làm xong.
Xem tại giây thứ 10 , enemy spawn ngay trước súng của player.
Xem lại cách spawn (spawn ngoài phạm vi Camera nhưng có thể ra xa hơn phạm vi một chút).
bandicam.2023-03-09.21-51-10-185.mp4
Có thể làm scene đơn giản hoặc màu mè (Tùy ý design)
Tạo scene Main Menu ở trong folder Scenes ở đường dẫn: "Assets/Scenes" .
Design Scene "Main Menu" gồm 2 button: New Game và Quit (Xem design trên document, có thể cho thêm màu sắc).
Xử lý sự kiện cho 2 nút bấm.
Khi bấm "Quit" sẽ thoát chương trình luôn.
Demo khi bấm nút Play để chuyển sang scene Choose Character (Có thể log() ra message để test nếu chưa có scene Choose Character ).
Cách handle event click cho button có thể lên mạng tham khảo thêm. Cách làm cá nhân: "Tạo Empty GameObject đặt tên là SceneEventManager . Tạo 1 script đính vào empty object đó, script sẽ có những hàm xử lý event cho 2 button.
Record lại video đã test vào "Pull Request để review".
Đã tìm ra nguyên nhân:
Do script Camera Follow Player.
Code di chuyển nhân vật đang bị comment (ko biết ai động vào).
Cách xử lý:
Tạm thời bỏ script Camera Follow Player ra khỏi Main Camera.
UnComment lại code di chuyển bằng JoyStick.
Record lại video sau khi làm xong.
Cách random đã có trong doc.
Tạo 1 folder tên là SupportItems trong đường dẫn sau: "Assets/Resources/Prefabs" (Nếu đã có thì ko cần tạo)
Tạo 1 Prefab của support item , khi random ra map đổi sprite item tương ứng.
Có thể dùng timer để spawn, phạm vi camera có thể lấy từ Doctor T.
Random bên ngoài phạm vi Camera.
bandicam.2023-03-08.11-32-58-994.mp4
Tạo 2 folder Playable Character và Enemy trong đường dẫn: "Assets/Resources/Prefabs"
Khi giết được 1 Enemy sẽ cộng thêm kinh nghiệm, thay đổi thanh kinh nghiệm.
Khi thanh kinh nghiệm đầy sẽ reset value về 0 và require XP sẽ tăng lên.
Sau khi thanh kinh nghiệm đầy sẽ hiện thị Scene Upgrade Character .
Tại Scene Upgrade Character chọn 1 trong 2 button để nâng stat (Chỉ nâng được 1 lần mỗi khi kinh nghiệm đầy).
Công thức đã có trên doc
Record lại video sau khi làm xong
Tạo Prefab theo đường dẫn sau: "Assets/Resources/Prefabs/PlayableCharacter" .
Tạo các hình khối của 3 nhân vật Playable Character.
Kéo thả các nhân vật vào trong folder "PlayableCharacter" .
Sau đó kéo từng prefab vào camera để test hình thù nhân vật
Chụp lại màn hình sau khi làm xong.
Tạo 1 folder đặt tên là Scripts ở đường dẫn: "Assets/"
Bên trong folder Scripts , tạo 2 folder con đặt tên là Prefab Controllers và Scene Controllers .
Test :
Record lại video sau khi làm xong
Nhân vật không thể đi lên, xuống, trái, phải khi dung joystick mobile.
Tạo Sprite của map nếu cần, chỉ cần đơn giản (Có thể cho map màu xanh nhạt).
Tạo Script gen map theo đường dẫn sau: "Assets/Scripts" .
Đính script tạo map vào Camera (Ý kiến cá nhân).
Record video demo gen map
Có vấn đề gì có thể họp nhóm để support
Khi bấm 2 nút sang trái và đi lên hoặc xuống , nhân vật sẽ di chuyển chéo nhanh hơn bình thường.
Phần này có nói trong Coursera của Doctor T tại phần di chuyển Teddy.
Phần code di chuyển trong: "Assets/Scripts/PrefabControllers/PlayableCharacterController.cs"
Nhắn lại nếu có gì không đúng
bandicam.2023-03-05.10-13-00-835.mp4
Dùng hình khối hoặc ghép các hình khối vào với nhau để làm chướng ngại vật.
Tạo prefab của obstacle rồi cho vào đường dẫn : "Assets\Resources\Prefabs" (Tạo thêm folder là Obstacle trong folder Prefabs ).
Chụp lại folder Obstacle sau khi làm xong
Nếu súng giống nhau sẽ nâng cấp súng lên, và thay đổi text của button từ change sang pick up
Thay đổi toàn bộ stat của súng sau khi nâng cấp.
Record lại video sau khi làm xong.
Mỗi khi random ra 1 loại súng, kiếm đều sẽ có sức sát thương riêng (thông số đã có trên doc).
Thêm sẵn các properties cần thiết để sau này có thể upgrade súng ().
Khi bắn ra đạn, đạn sẽ chứa sát thương của súng đang cầm.
Không cần làm phần upgrade súng
Record lại video sau khi làm xong
Spawn enemy theo mỗi round.
Tăng số lượng enemy theo round (sau 5 round).
Tạm thời spawn 5 con, sau mỗi round sẽ sẽ thêm 10 enemy.
Giới hạn enemy khi spawn (tránh spawn vô hạn). Đã có biến static totalEnemiesOnMap (đếm số quái đã spawn) trong DataPreserve .
Xem lại doc về round (phần game play, Enemies Per Round) .
Record lại video sau khi làm xong .
Record xong, chỉnh lại số lượng quái spawn mỗi round như trong doc .
Random ra quái, cách random đã có trên doc
Tạo hàm random quái trong ScenePlayGameController (sau 1s spawn ra quái, script đã được vào Camera): "Assets/Scripts/SceneControllers/ScenePlayGameController.cs" .
Enemy spawn bên ngoài phạm vi Camera
Đổi Sprite của mỗi con quái khi spawn.
Scene này hiện lên khi người chơi thoát game khi đang chơi dở .
Design giống hoặc khác (Tùy ý thay đổi cho đẹp) trên doc, hiển thị tổng số điểm và thời gian sống sót.
Xử lý sự kiện bấm nút Exit sẽ quay về Main Menu Scene .
Chụp lại màn hình scene sau khi làm xong.
Khi enemy chạm vào player sẽ tự động phát nổ và gây sát thương.
Tạo Animation vụ nổ (Có thể làm giống Doctor T ).
Tạo Prefab vụ nổ và cho vào Folder Explosion theo đường dẫn sau: "Assets/Resources/Prefabs/Explosion"
Destroy game object Explosion sau khi spawn.
Design phần UI trước, tùy cách bố trí cho hợp lý
Design dựa trên doc.
Khi mở Scene này thì game sẽ tạm thời dừng chơi (pause game ).
Thêm nút Back to game để quay về scene đang chơi dở.
Xử lý sự kiện cho các button (có thể tạm thời log ra message nào đó để test).
Chụp lại Scene sau khi làm xong.
Khi player nhặt kiếm (sword) sẽ chuyển sang chế độ đánh gần.
Khi bấm nút shoot sẽ tiến hành chém hoặc đâm (stab) (cần bàn thêm) .
Sword sẽ có trigger collider để Enemy nhận vào damage của kiếm.
Thêm phần nhận damage từ kiếm cho Enemy (Nếu có rồi thì không cần thêm).
Test Game:
Tạm thời kéo thả prefab của súng vào scene.
Trong hàm RandomGunType của GunController , hard code ở switch case là giá trị int = 4 (Để spawn ra sprite kiếm).
Di chuyển player đến súng để nhặt kiếm.
Tiến hành chém enemy
Test xong revert hàm RandomGunType về như cũ
Record lại video sau khi làm xong
Record lại video sau khi làm xong
Kẻ địch tự tìm đường đi đến nhân vật.
Tạo 1 script đính vào Enemy Prefab theo đường dẫn sau: "Assets/Scripts/PrefabControllers" .
Enemy né tránh hoặc đi qua chướng ngại vật (Cần bàn thêm về vấn đề này sau).
Record lại video sau khi làm.
Khi player nhặt được item sẽ tăng thông số tạm thời.
Khi tăng máu sẽ phải tăng cả Health Bar , chỉ nhặt item hồi máu khi HP chưa ở mức cao nhất (Đang bị mất máu ). Vẫn cho người chơi nhặt item nhưng sẽ ko tăng máu để ko vượt quá số HP đã giới hạn (Check máu đã đầy mà player chạm vào item thì item biến mất và ko tăng máu).
Nhặt Speed up khi player ko còn bị ảnh hưởng (affect) bởi item speed up cũ, hoặc tăng thêm thời gian speed up (cần họp thêm).
Item Invincible time tương tự như Speed Up .
Tạo Prefab Enemy theo đường dẫn sau: "Assets/Resources/Prefabs/Enemy" .
Tạo các hình khối của 4 nhân vật Enemy.
Kéo thả từng prefab của enemy vào scene hiện tại để xem hình thù.
Chụp lại màn hình folder Enemy và Scene hiện tại sau khi làm xong.
Phần này chỉ tạo giao diện, logic code sẽ code sau
Tạo ScenePlayGame để chơi.
Làm phần UI trước (các bố cục, thanh máu, kinh nghiệm, các nút bấm).
Record lại video demo nút bấm và chụp screen sau khi làm xong
Tạo các folder structure trong branch của mình.
Giữ lại folder Resources và folder Prefabs bên trong nó.
Có thể kèm theo các ghi chú khác nếu cần thiết.
Cho Enemy này cầm 1 khẩu súng để bắn đạn vào player .
Enemy tự ngắm vào player khi vào tầm.
Có thể dùng OverLapCircleAll để check player có trong phạm vi. Nếu detect được player sẽ tự động bắn.
Sát thương của đạn bắn ra bằng với sát thương của Enemy
Record lại video sau khi làm
Phải có hình nhân vật (Sprites) trước.
Tạo scene Choose Character ở trong folder Scenes ở đường dẫn: "Assets/Scenes" .
Xử lý event click button "Play" .
Chữ Stat... là thông số player: HP, tốc độ di chuyển . Tùy cách design cho dễ hiểu.
Phần chọn nhân vật gồm có Tên, Hình thù nhân vật và Stat
Record video test button click (Log() ra 1 message nào đó), chụp lại ảnh scene design.
Design UI từ doc (xem lại trong Doc có thay đổi gì so với issue):
Tạo folder tên là Scene Manager trong folder Scripts theo trong đường dẫn: "Assets/Scripts" .
Tất cả code liên quan đến chuyển scene hay event cho scene sẽ tạo file code .cs ở đây.
Khi chọn 1 trong 3 nhân vật, bấm nút play bên dưới scene chính để bắt đầu chơi
Sau đó sẽ spawn ra nhân vật tương ứng với lựa chọn ở giữa màn hình.
Record lại video sau khi làm
Giảm máu (HP) khi bị tấn công bởi enemy.
Thanh máu giảm theo mỗi lần bị tấn công (Hiện tại thanh máu đang là 1 Slider) .
Khi người chơi máu <= 0 (chết) sẽ hiện thị Scene Game Over .
Đồng thời làm luôn phần thời gian sống sót.
Kéo thả Prefab của Enemy vào Scene, di chuyển người chơi chạm vào Enemy sẽ bị trừ máu.
Cho máu (HP) player dựa trên nhân vật được chọn.
Cho mỗi lần chạm vào enemy sẽ chết (bị trừ 50 máu cho nhanh chết).
Record lại video sau khi làm xong.
Thay đổi tốc độ và máu của player theo nhân vật đã chọn
Có vấn đề gì nhắn vào nhóm. VD: Nên hiển thị số máu trên thanh máu hay ko
Bấm vào button change để nhặt súng.
Khi pick up súng sẽ thay đổi Sprite, thuộc tính , ... của súng.
Tạm thời kéo thả 1 vài prefab súng vào scene rồi cho player di chuyển đến.
Record video sau khi làm xong.