1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài: Tìm hiểu về Game và cách xây dựng Game đa nền tảng với UnityEngine

62 123 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Đề tài: Tìm hiểu về Game và cách xây dựng Game đa nền tảng với Unity Engine được nghiên cứu với các nội dung: Giới thiệu chung, làm quen với môi trường Unity, làm quen với môi trường Unity Engine, kết luận. Để hiểu rõ hơn về đề tài mời các bạn cùng tham khảo tài liệu.

MỤC LỤC Lời mở đầu Chương 1. Giới thiệu chung .3 1.1. Giới thiệu về Unity    1.2. Tính năng của Unity 1.3. Các khái niệm cơ bản trong Unity 4­6 Chương 2. Làm quen với môi trường Unity .7 2.1. Tìm hiểu và khởi tạo các đối tượng cơ bản trong Unit 7­29 2.2. Thành phần vật lý và xử lý va chạm 29­31 2.3. Xử lý Text, hiệu ứng trong game và chuyển màn chơi 32­35 2.4. Một số cơ sở dữ liệu trong game Unity 36­40 Chương 3. Làm game với Unity Engine 41 3.1. Giới thiệu game đang thực hiện .41­43 3.2. Mục tiêu đề tài 44 3.3. Tài liệu tham khảo 44 Kết Luận .45 ~ 1 ~ Lời mở đầu Ngày nay, Cơng nghệ thơng tin đang là nghành được đầu tư phát triển  rộng rãi nhất, ta có thể thấy máy tính, laptop xuất hiện ở khắp nơi như  tại  doanh nghiệp, cơng ty, nhà trường.  Cơng nghệ thơng tin khơng chỉ giúp ta hồn  thành cơng việc 1 cách nhanh chóng, chính xác mà còn là thứ có thể đáp ứng nhu  cầu giải trí cho mọi người sau một ngày làm việc mệt mỏi.  Chỉ với một cái laptop hay 1 cái máy tính để bàn ta có thể sử dụng để xem  phim, nghe nhạc và chơi game. Hơn nữa sự bùng nổ của CNTT cũng kéo theo  những chiếc PC, laptop, điện thoại có cấu hình khủng giúp chúng ta có thể làm  mọi việc trên 1 chiếc máy tính. Đặc biệt  Chính vì vậy, nội dung luận văn mà em sẽ thực hiện là tìm hiểu về Game  và cách xây dựng game đa nền tảng với Unity Engine.   ~ 2 ~ Chương 1. Giới thiệu chung 1.1. Giới thiệu về Unity ­ Unity3D là một mơi trường phát triển tích hợp, mạnh mẽ, hỗ trợ thao tác kéo  thả, tuỳ biến giao diện nhanh chóng, trực quan ­ Cung cấp các cơng cụ xử lý đồ hoạ, tích hợp sẵn thư viện vật lý, tính tốn va  chạm ­ Hỗ trợ phát triển cả game 2D và 3D ­ Hỗ trợ nhiều nền tảng thơng dụng như OSX, Linux, Window, Web, iOS,  Window Phone 8, Android, PS3, BB… ­ Cộng đồng người dùng, hỗ trợ rộng lớn ­ Có phiên bản miễn phí có thể chạy được trên Window và Mac OSX 1.2. Tính năng của Unity  Unity3D hướng tới người sử dụng chun nghiệp và cả nghiệp dư, nên  khá dễ để sử dụng. Với ngơn ngữ lập trình bằng C#, JavaScript hoặc  BOO  Ngày nay rất nhiều nhà phát triển game lựa chọn Unity3D để phát triển  bởi khả năng hỗ trợ đa nền tảng và sự mạnh mẽ tiện dụng của Unity3D  Đến với Unity, các bạn sẽ khơng cần phải băng khoăn về các vấn đề xử  lý, các khái niệm đồ hoạ phức tạp  tất cả đều trở nên dễ dàng và nhanh  chóng với Unity ~ 3 ~ 1.3. Các khái niệm cơ bản trong Unity 1.3.1. GameObject ­ Một đối tượng cụ thể trong game gọi là một game object, có thể là nhân vật,  đồ vật nào đó Ví dụ: cây cối, xe cộ, nhà cửa, người 1.3.2. Component ­ Một GameObject sẽ có nhiều thành phần cấu tạo nên nó như là hình ảnh  (sprite render), tập hợp các hành động (animator), thành phần xử lý va chạm  (collision), tính tốn vật lý (physical), mã điều khiển (script), các thành phần  khác  mỗi thứ như vậy gọi là một component của GameObject 1.3.3. Sprite ­ Là một hình ảnh 2D của một game object có thể là hình ảnh đầy đủ, hoặc có  thể là một bộ phận nào đó.  1.3.4. Animation ~ 4 ~ ­ Là tập một hình ảnh động dựa trên sự thay đổi liên tục của nhiều sprite khác  1.3.5. Key Frame ­ Key Frame hay Frame là một trạng thái của một animation. Có thể được tạo  nên từ 1 sprite hay nhiều sprite khác nhau 1.3.6. Prefabs ­ Là một khái niệm trong Unity, dùng để sử dụng lại các đối tượng giống nhau  có trong game mà chỉ cần khởi tạo lại các giá trị vị trí, tỉ lệ biến dạng và góc  quay từ mơt đối tượng ban đầu Ví dụ: Các đối tượng là đồng tiên trong game Mario đều có xử lý giống nhau,  nên ta chỉ việc tạo ra một đối tượng ban đầu, các đồng tiền còn lại sẽ sử dụng  prefabs. Hoặc khi ta lát gạch cho một cái nền nhà, các viên gạch cũng được sử  dụng là prefabs 1.3.7. Sounds ­Âm thanh trong game 1.3.8. Script ­ Script là tập tin chứa các đoạn mã nguồn, dùng để khởi tạo và xử lý các đối  tượng trong game.  ­ Trong Unity có thể dung ngơn ngữ lập trình C#, Java Script, BOO để lập trình  Script ~ 5 ~ ­ Unity có hỗ trợ sẵn phần mềm MonoDeveloper dùng để lập trình 1.3.9. Scenes ­ Quản lý tất cả các đối tượng trong một màn chơi của game.  Ảnh minh họa scene game 1.3.10. Assets ­ Bao gồm tất cả những gì phục vụ cho dự án game như sprite, animation, sound,  script, scenes… 1.3.11. Camera ~ 6 ~ ­ Là một game object đặc biệt trong scene, dùng để xác định tầm nhìn, quan sát  các đối tượng khác trong game 1.3.12. Transform ­ Là 3 phép biến đổi tịnh tiến, quay theo các trục, và phóng to thu nhỏ một đối  tượng  Chương 2. Làm quen với mơi trường Unity 2.1. Tìm hiểu và khởi tạo các đối tượng cơ bản trong Unity Ảnh minh họa bố trí của Unity 2.1.1. Các thành phần và bố trí a. Scene ~ 7 ~ ­ Phần màu đỏ số 1 ­ Phần này phần hiển thị các đối tượng trong scenes một cách trực quan, có thể  lựa chọn các đối tượng, kéo thả, phóng to, thu nhỏ, xoay các đối tượng  ­ Phần này có để thiết lập một số thơng số như hiển thị ánh sáng, âm anh, cách  nhìn 2D hay 3D  b. Game ­ Phần màu đỏ số 1 ­ Phần này cho phép ta xem trước hiển thị từ scene ra game, bên cạnh tab scene c. Inspector ­ Phần số 2 màu vàng ­ Phần này hiển thị các component của một Game Object và các thơng số của các  component d. Project ­ Phần số 3 màu xanh lá cây ­ Phần này hiển thị thư mục Assets, chứa tất cả các tài ngun của dự án game ­ Ở phần này, bên cạnh tab khác, có phần Console để hiển thị các log trong q  trình debug e. Hierarchy ­ Phần đóng khung màu tím ­ Phần này quản lý tất cả các đối tượng trong scenes, có thể chọn lựa, đổi tên,  xố các đối tượng ra khỏi game f. Top bar ~ 8 ~ ­ Phần đóng khung màu đà  ­ Phần này chứa các nút chun dụng: + Bốn nút bên trái: (1) tuỳ chọn cho phép dùng chuột kéo tồn bộ scenes, phóng  to, thu nhỏ, lựa chọn các đối tượng trong scenes  (2) cho phép dùng chuột di  chuyển các đối tượng trong scenes, (3) cho phép dùng chuột quay các đối tượng  (4) cho phép dùng chuột phóng to, thu nhỏ các đối tượng  + Ba nút ở giữa: (1) cho phép chạy demo game, (2) cho phép dừng game tại một  frame nào đó, (3) cho phép chạy từng frame + Hai drop list bên phải: (1) cho phép tuỳ chọn hiển thị các layer, (2) cho phép  chọn và lưu các bố trí do người dùng thiết lập Ngồi ra còn có các cửa sổ khác của Unity, như Sprite Editor, Animation,  Animator, Console  và các bạn có thể tự tuỳ biến cho mình một bố cục sao cho  thuận tiện với mình nhất   2.1.2. Tạo và cấu hình với dự án 2D ­ Bật Unity lên, vào menu File/New Project ~ 9 ~ Ảnh minh họa Chọn loại project là 2D sau đó gõ tên project xong nhấn Create Project. Kết quả  như sau: ~ 10 ~ ­ Với mỗi địch bị tiêu diệt bạn sẽ nhận được 100 điểm, game có tính thời gian  chơi sau khi kết thúc trò chơi thời gian chiến đấu sẽ được tính như điểm thưởng  với 1s = 1 điểm ­ Khi đạt được số điểm nhất định bạn sẽ được chuyển sang màn đánh với Boss,  sau khi tiêu diệt boss điểm thưởng ( thời gian ) sẽ được nhân đơi cùng với số  điểm tiêu diệt mặc định là 1000 điểm 3.1.3. Một số hình ảnh về game: *Màn khởi động + Gồm 4 nút: ­ New game : chuyển đến màn chơi 1 ­ LeaderBoard: click vào nút này ta có thể xem bảng xếp hạng điểm số  người chơi ­ Game Info: Thơng tin về game, hướng dẫn cách chơi ~ 48 ~ ­ Exit: Thốt khỏi trò chơi + Code xử lý khi click button: ­ Chuyển màn chơi: Ví dụ: Application.LoadLevel(“ingame01”)  hay Application.LoadLevel(1); => Với phiên bản hiện tại của Unity (5.4) khuyến khích dùng  SceneManager.LoadScene(string name) or SceneManager.LoadScene (int index),  và để sử dụng ta phải khai báo thư viện : using UnityEngine.SceneManagement; ­  Thốt game: Application.Quit(); *Màn 1: ~ 49 ~ + Code xử lý điều khiển game: ­ Di chuyển Player với 4 phím A, D, W, S ( trái, phải, trên, dưới ) và bắn  đạn với phím space ( phím cách ): *Chú thích: Như đã nói ở phần trên các phương thức áp dụng: ­  Input.GetKey: Nhấn và giữ để thực thi  Input.GetKeyDown: Chỉ cần nhấn nút  Input.GetKeyUp: Nhấn rồi thả.  Điều khiển AI tự động được khởi tạo, bay và bắn: Khởi tạo: ~ 50 ~ InvokeRepeating( string name, float timebegin, float timedelay):  Thực thi nhiều lần 1 hàm với thời gian bắt đầu ( timebegin ) và thời  gian trì hỗn để thực thi tiếp ( timedelay ), tham số name  là tên hàm cần  thực thi Instantiate( GameObject object, Vector3 position, Quaternion   rotation): Hàm tạo bản sao 1 đối tượng với vị trí và xoay chỉ định theo tham số Object: đối tượng cần tạo clone ( bản sao) Position: vị trí cần khởi tạo Rotation: góc xoay.  AI di chuyển và tạo đạn: ~ 51 ~  Transform.Translate( Vector3 transition): di chuyển 1 đối tượng theo  hướng nào đó, biến speed * Time.deltaTime  chính là tốc độ di  chuyển trên thời gian thực tính bằng giây  Destroy(this.gameObject) hoặc Destroy(gameObject): hủy đối tượng  gắn script này với 1 điều kiện nào đó   Hàm Instantiate ở trên để tạo bản sao của đạn tại vị trí và góc xoay  của địch (AI)  Chú ý: Những đối tượng cần tạo bản sao phải tạo Prefabs cho đối  tượng đó, thường là những đối tượng xuất hiện nhiều lần trong  game  Để AI bắn đạn về phía người chơi cần xử lý tốc độ và hướng đạn: ~ 52 ~  GameObject player  =  GameObjec.Find(“Player”): tìm kiếm đối  tượng với tên Player và gán nó cho biến player để thao tác  Direction = player.transform.position  –  transform.position: biến  direction kiểu Vector3 sẽ nhận giá trị là 1 vector hướng từ vị trí AI  đến người chơi  Ở trên hàm Update() sẽ thực thi việc bắn đạn theo hướng vector  direction với speed*Time.deltaTime ( tốc độ nhân với thời gian  thực)  Time.deltaTime : trả về thời gian game bắt đầu đến khi kết thúc  frame cuối cùng, trả về đơn vị là giây theo thời gian thực  Định dạng hiển thị thời gian:  ~ 53 ~  SceneManager.GetActiveScene().buildIndex: trả về giá trị index kiểu int của  scene hiện tại *Màn Boss:  Khi chuyển từ 1 scene sang một scene khác đối tượng sẽ bị hủy, vì thế để  chuyển các đối tượng cần thiết sang màn boss này ta dùng hàm: ~ 54 ~ DontDestroyOnLoad(gameObject);  Ở màn boss này có 1 xử lý khá khó nữa mà em cần tham khảo đó  là việc  boss di chuyển lên xuống tuần hồn: void Update () { Vector3 currentposition = Vector3.Lerp(upposition.position, downposition.position,Mathf.Cos(Time.time/Traveltime*Mathf.PI*2) * -.5f+.5f); GetComponent().MovePosition(currentposition); }   Vector3.Lerp(): hàm cho phép ta di chuyển giữa 2 điểm.   Đoạn code trên ta cần khởi tạo 2 đối tượng là Upposition và downposition  làm điểm giới hạn di chuyển trên dưới của đối tượng  Ta có thể tăng hoặc giảm tốc độ di chuyển qua tham số Traveltime,  traveltime càng lớn đối tượng di chuyển càng chậm *Màn thua:  ~ 55 ~  Sau khi chỉ số thanh HP của người chơi = 0 thì sau vài giây sẽ  chuyển qua màn này  Điểm chính trong scene này là việc lưu tên, tính tổng điểm của  người chơi với nút Save scores. Vì PlayerPrefs có hạn chế trong  việc  lưu trữ và load dữ liệu giữa các màn nên ta sẽ lưu trữ dưới  dạng File ~ 56 ~ Tạo 1 class tĩnh SaveLoadinfo với 2 hàm Save() và  Load() , 1 List  tĩnh chứa thơng tin người chơi ( tên,  điểm số ) Với việc thêm từ khóa static( tĩnh) giúp cho lập trình viên có thể  truy xuất các biến và hàm của class này từ 1 class khác Hàm Save(): Khởi tạo và ghi dữ liệu vào file Hàm Load(): Kiểm tra xem  file có tồn tại ko, nếu có thì load dữ  liệu ra và gán cho 1 biến nào đó, đoạn code trên ta lưu vào1 list lên  khi load cần gán giá trị cho list đó Lớp scoreinfo là 1 đối tượng của list chứa thơng tin người chơi như:  tên, điểm số *Màn khi chiến thắng: ~ 57 ~ Cách xử lý tương tự như màn  thua chỉ thêm hiệu ứng như pháo hoa với việc sử  dụng Particle system *Bảng xếp hạng: ~ 58 ~  Những xử lý quan trọng trong phần này là về cơ sở dữ liệu, cách load dữ  liệu từ file ra bảng, xếp hạng người chơi theo điểm số  Để show dữ liệu ra bảng  thì trước hết cần có dữ liệu, ta  gọi hàm Load()  của class SaveLoadinfo:  SaveLoadinfo.Load()  Xếp hạng người chơi theo điểm số: Vì dữ liệu lưu vào là 1 list nên ta có hàm Sort() dễ dàng sắp xếp thứ tự các  đối tượng trong list theo 1 điều kiện nào đó Hàm Sort() chỉ được thực hiện khi đối tượng là class scoreinfo thêm  IComparable, hàm này sẽ so sánh giá trị đầu tiên với giá trị thứ 2 được thêm vào  và giá trị nào lớn hơn sẽ được xếp lên trước.  ~ 59 ~ 3.2. Mục tiêu đề tài ­ Đã nắm  bắt được một số xử lý cơ bản trong Unity và sử dụng được 2 loại  lưu trữ database trong bài  là: PlayerPrefs và dạng file ­ Mục tiêu :  + Biết sử dụng nhiều loại database hơn để làm game trên Unity, nâng cao  xử lý các hiệu ứng trong game : âm thanh, hình ảnh… + Có thể làm nhiều thể loại game 2D, 3D trên Unity 3.3. Tài liệu tham khảo * Một số link tham khảo : http://unity3d.com/learn/tutorials http://docs.unity3d.com/ScriptReference/ ~ 60 ~ http://www.stdio.vn/articles/read/317/luu­tru­thong­tin­game­voi­playerprefs http://share3dvn.blogspot.com/2011/12/unity­nang­cao­p5­database.html ~ 61 ~ Kết Luận Cùng với sự phát triển kinh tế, xã hội của thế giới đó là nhu cầu giải trí  ngày càng cao của con người. Một trong những nhu cầu giải trí đó là chơi game,  một hình thức giải trí dành cho mọi lứa tuổi những lúc rảnh rỗi hay căng thẳng  vì cơng việc.  Là 1 lập trình viên hay những người có hứng thú với game nên tìm  hiểu  và làm ra 1 game  mà mình mong  muốn, điều này sẽ giúp cho đất nước ngày  càng phát triển về kinh tế và tư duy của con người ~ 62 ~ ... Chính vì vậy, nội dung luận văn mà em sẽ thực hiện là tìm hiểu về Game và cách xây dựng game đa nền tảng với Unity Engine.   ~ 2 ~ Chương 1. Giới thiệu chung 1.1. Giới thiệu về Unity ­ Unity3D là một mơi trường phát triển tích hợp, mạnh mẽ, hỗ trợ thao tác kéo ... Ngày nay rất nhiều nhà phát triển game lựa chọn Unity3D để phát triển  bởi khả năng hỗ trợ đa nền tảng và sự mạnh mẽ tiện dụng của Unity3D  Đến với Unity, các bạn sẽ khơng cần phải băng khoăn về các vấn đề xử  lý, các khái niệm đồ hoạ phức tạp... lý, các khái niệm đồ hoạ phức tạp  tất cả đều trở nên dễ dàng và nhanh  chóng với Unity ~ 3 ~ 1.3. Các khái niệm cơ bản trong Unity 1.3.1. GameObject ­ Một đối tượng cụ thể trong game gọi là một game object, có thể là nhân vật, 

Ngày đăng: 15/01/2020, 04:20

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w