Coder Social home page Coder Social logo

truongthetan / flastsurvival Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 2.02 MB

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%
android-app mobile-game endless survival

flastsurvival's People

Contributors

anh3214 avatar sethetherald avatar truongthetan avatar

Stargazers

 avatar  avatar

Watchers

 avatar

flastsurvival's Issues

Tạo Sprite cho đạn của súng

  • 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.

Tạo các sprite của súng

  • 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.

Design, vẽ các item support cho player

  • 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".

Nhân vật tự động ngắm đến kẻ địch gần nhất

  • 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.

Tạo thanh health bar cho Enemy

  • 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.

Camera di chuyển theo người chơi

  • 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.

Tạo damage cho Enemy

  • 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.

Thêm 3rd Party folder

  • 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.

Bấm nút bắn để bắn đạn (Playable Character)

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 EnemyPlayable 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.

Enemy spawn quá gần người chơi

  • 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

Tạo Scene "Main Menu"

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 GameQuit (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".

Nhân vật bất động khi dùng joyStick mobile

Đã 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.

Random ra các support items

  • 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.

Nâng cấp nhân vật

  • 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 Playable Character và Prefabs

  • 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 Folder Script

  • 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 ControllersScene Controllers.

Xóa Enemy khi khoảng cách người chơi quá xa

  • Xóa enemy khi cách người chơi ở 1 khoảng cách nhất định (Bàn thêm)

  • Giảm tổng enemy khi xóa.

  • Tiếp tục spawn enemy khi chưa vượt quá số lượng tối đa.

Test:

  • Tạm thời cho max enemy = 10 con

  • Sau khi đi xa người chơi thì tự động Destroy().

  • Sau đó spawn lại enemy.

Record lại video sau khi làm xong

Tạo Sprite Map, code gen Map

  • 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

Character di chuyển chéo nhanh hơn di chuyển sang trái, phải

  • 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

Thêm, import Assest JoyStick cho mobile

Làm từ trên xuống dưới theo thứ tự:

  • Import asset là JoyStick Pack cho mobile để tạo nút di chuyển cho nhân vật vào project (Cho vào trong folder 3rd Party như #3 đã nhắc đến).
  • Sử dụng loại Fixed JoyStick (Kéo thả vào màn hình).
  • Demo sử dụng JoyStick để di chuyển nhân vật (chọn hình thù bất kỳ).
  • Quay video lại để xem demo nhân vật di chuyển.

Cách import 1 Asset: https://docs.unity3d.com/560/Documentation/Manual/AssetPackages.html

Link JoyStick Pack: https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631

Cách dùng JoyStick: https://www.youtube.com/watch?v=bp2PiFC9sSs

Tạo obstacle (chướng ngại vật) trên map

  • 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

Nhặt súng (upgrade súng)

  • 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.

Thêm sát thương cho mỗi khẩu súng

  • 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

Enemy spawn theo round

  • 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.

Spawn random enemy

  • 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.

Tạo Scene kết thúc game (Game Over)

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.

Tạo Vụ nổ cho Explosive Dave

  • 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.

Tạo Scene Upgrade nhân vật

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.

Đánh gần cho player

  • 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

Enemy tìm đường ngắn nhất đến nhân vật

  • 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.

Player nhặt support items

  • 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 Enemy và Prefabs

  • 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.

Tạo Scene chính để chơi game

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

Enemy đánh tầm xa

  • 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

Tạo Scene Choose Character

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):

image

Tạo folder Scene Manager

  • 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.

Tạo damage cho Playable Character

  • 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

Nhặt súng (đổi súng)

  • 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.