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

60 893 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

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 3,55 MB

Nội dung

MỤC LỤC Lời mở đầu .2 Chương Giới thiệu chung 1.1 Giới thiệu Unity 1.2 Tính Unity 1.3 Các khái niệm Unity 4-6 Chương Làm quen với môi trường Unity .7 2.1 Tìm hiểu khởi tạo đối tượng Unit .7-29 2.2 Thành phần vật lý xử lý va chạm 29-31 2.3 Xử lý Text, hiệu ứng game chuyển chơi .32-35 2.4 Một số sở liệu game Unity 36-40 Chương Làm game với Unity Engine 41 3.1 Giới thiệu game thực 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 nghành đầu tư phát triển rộng rãi nhất, ta thấy máy tính, laptop xuất khắp nơi doanh nghiệp, công ty, nhà trường Công nghệ thông tin không giúp ta hoàn thành công việc cách nhanh chóng, xác mà thứ đáp ứng nhu cầu giải trí cho người sau ngày làm việc mệt mỏi Chỉ với laptop hay máy tính để bàn ta sử dụng để xem phim, nghe nhạc chơi game Hơn bùng nổ CNTT kéo theo PC, laptop, điện thoại có cấu hình khủng giúp làm việc máy tính Đặc biệt Chính vậy, nội dung luận văn mà em thực tìm hiểu Game cách xây dựng game đa tảng với Unity Engine ~2~ Chương Giới thiệu chung 1.1 Giới thiệu Unity - Unity3D 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ông cụ xử lý đồ hoạ, tích hợp sẵn thư viện vật lý, tính toán va chạm - Hỗ trợ phát triển game 2D 3D - Hỗ trợ nhiều tảng thông dụng 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 miễn phí chạy Window Mac OSX 1.2 Tính Unity  Unity3D hướng tới người sử dụng chuyên nghiệp nghiệp dư, nên  dễ để sử dụng Với ngôn ngữ lập trình C#, JavaScript BOO Ngày nhiều nhà phát triển game lựa chọn Unity3D để phát triển  khả hỗ trợ đa tảng mạnh mẽ tiện dụng Unity3D Đến với Unity, bạn không cần phải băng khoăn vấn đề xử lý, khái niệm đồ hoạ phức tạp tất trở nên dễ dàng nhanh chóng với Unity 1.3 Các khái niệm Unity ~3~ 1.3.1 GameObject - Một đối tượng cụ thể game gọi game object, nhân vật, đồ vật Ví dụ: cối, xe cộ, nhà cửa, người 1.3.2 Component - Một GameObject có nhiều thành phần cấu tạo nên hình ảnh (sprite render), tập hợp hành động (animator), thành phần xử lý va chạm (collision), tính toán vật lý (physical), mã điều khiển (script), thành phần khác thứ gọi component GameObject 1.3.3 Sprite - Là hình ảnh 2D game object hình ảnh đầy đủ, phận 1.3.4 Animation - Là tập hình ảnh động dựa thay đổi liên tục nhiều sprite khác ~4~ 1.3.5 Key Frame - Key Frame hay Frame trạng thái animation Có thể tạo nên từ sprite hay nhiều sprite khác 1.3.6 Prefabs - Là khái niệm Unity, dùng để sử dụng lại đối tượng giống có game mà cần khởi tạo lại giá trị vị trí, tỉ lệ biến dạng góc quay từ môt đối tượng ban đầu Ví dụ: Các đối tượng đồng tiên game Mario có xử lý giống nhau, nên ta việc tạo đối tượng ban đầu, đồng tiền lại sử dụng prefabs Hoặc ta lát gạch cho nhà, viên gạch sử dụng prefabs 1.3.7 Sounds -Âm game 1.3.8 Script - Script tập tin chứa đoạn mã nguồn, dùng để khởi tạo xử lý đối tượng game - Trong Unity dung ngôn ngữ lập trình C#, Java Script, BOO để lập trình Script - Unity có hỗ trợ sẵn phần mềm MonoDeveloper dùng để lập trình ~5~ 1.3.9 Scenes - Quản lý tất đối tượng chơi game Ảnh minh họa scene game 1.3.10 Assets - Bao gồm tất phục vụ cho dự án game sprite, animation, sound, script, scenes… 1.3.11 Camera - Là game object đặc biệt scene, dùng để xác định tầm nhìn, quan sát đối tượng khác game 1.3.12 Transform - Là phép biến đổi tịnh tiến, quay theo trục, phóng to thu nhỏ đối tượng ~6~ Chương Làm quen với môi trường Unity 2.1 Tìm hiểu khởi tạo đối tượng Unity Ảnh minh họa bố trí Unity 2.1.1 Các thành phần bố trí a Scene - Phần màu đỏ số - Phần phần hiển thị đối tượng scenes cách trực quan, lựa chọn đối tượng, kéo thả, phóng to, thu nhỏ, xoay đối tượng - Phần có để thiết lập số thông số hiển thị ánh sáng, âm anh, cách nhìn 2D hay 3D b Game - Phần màu đỏ số - Phần cho phép ta xem trước hiển thị từ scene game, bên cạnh tab scene c Inspector - Phần số màu vàng - Phần hiển thị component Game Object thông số ~7~ component d Project - Phần số màu xanh - Phần hiển thị thư mục Assets, chứa tất tài nguyên dự án game - Ở phần này, bên cạnh tab khác, có phần Console để hiển thị log trình debug e Hierarchy - Phần đóng khung màu tím - Phần quản lý tất đối tượng scenes, chọn lựa, đổi tên, xoá đối tượng khỏi game f Top bar - Phần đóng khung màu đà - Phần chứa nút chuyên dụng: + Bốn nút bên trái: (1) tuỳ chọn cho phép dùng chuột kéo toàn scenes, phóng to, thu nhỏ, lựa chọn đối tượng scenes (2) cho phép dùng chuột di chuyển đối tượng scenes, (3) cho phép dùng chuột quay đối tượng (4) cho phép dùng chuột phóng to, thu nhỏ đối tượng + Ba nút giữa: (1) cho phép chạy demo game, (2) cho phép dừng game frame đó, (3) cho phép chạy frame + Hai drop list bên phải: (1) cho phép tuỳ chọn hiển thị layer, (2) cho phép chọn lưu bố trí người dùng thiết lập Ngoài có cửa sổ khác Unity, Sprite Editor, Animation, Animator, Console bạn tự tuỳ biến cho bố cục cho thuận tiện với ~8~ 2.1.2 Tạo cấu hình với dự án 2D - Bật Unity lên, vào menu File/New Project Ảnh minh họa Chọn loại project 2D sau gõ tên project xong nhấn Create Project Kết sau: ~9~ ảnh minh họa Sau tạo dự án xong, Hierarchy có đối tượng Main Camera Chúng ta cần điều chỉnh kiểu hiển thị Scene 2D Ở cửa sổ Hierarchy chọn Main Camera Ở cửa sổ Inspector hiển thị thông số camera, ta chọn lại giá trị Projection hay phép chiếu phép chiếu vuông góc thay cho phép chiếu phối cảnh ~ 10 ~ - Nhược điểm: Không thể tích hợp client SQLite, nên ko thể xài game offline với loại 2.4.6 Lưu trữ liệu với SQLserver Đây hệ quản trị CSDL quan hệ đối tượng Nó có sức mạnh ngôn ngữ SQL đảm bảo tốc độ xử lý liệu cao, an toàn bảo mật cao - Ưu điểm: Dữ liệu lớn an toàn, dễ bảo trì nâng cấp database (giống MySQL) Phù hợp với game cần liệu lớn an toàn cao Thông thường server truy cập xử lý liệu Hệ thống server nhận yêu cầu từ phía client truyền lại client kết xử lý Việc thao tác với SQLserver dễ dàng công nghệ, thông thường ta dùng Net đề làm việc - Nhược điểm: Chỉ thích hợp game online, không xài cho game offline Chương Làm game với Unity Engine 3.1 Giới thiệu game thực 3.1.1 Nội dung Game: - Điều khiển máy bay chiến đấu với vật thể lạ ( UFO ) 3.1.2 Cách chơi: - Sử dụng phím A,D,W,S tương ứng để di chuyển sang trái, phải, lên trên, xuống - Phím Space để bắn đạn - Với địch bị tiêu diệt bạn nhận 100 điểm, game có tính thời gian chơi sau kết thúc trò chơi thời gian chiến đấu tính điểm thưởng với 1s = điểm - Khi đạt số điểm định bạn chuyển sang đánh với Boss, sau tiêu diệt boss điểm thưởng ( thời gian ) nhân đôi với số điểm tiêu diệt mặc định 1000 điểm ~ 46 ~ 3.1.3 Một số hình ảnh game: *Màn khởi động + Gồm nút: - New game : chuyển đến chơi LeaderBoard: click vào nút ta xem bảng xếp hạng điểm số người - chơi Game Info: Thông tin game, hướng dẫn cách chơi Exit: Thoát khỏi trò chơi + Code xử lý click button: - Chuyển chơi: Ví dụ: Application.LoadLevel(“ingame01”) hay Application.LoadLevel(1); => Với phiên Unity (5.4) khuyến khích dùng SceneManager.LoadScene(string name) or SceneManager.LoadScene (int index), để sử dụng ta phải khai báo thư viện : using UnityEngine.SceneManagement; - Thoát game: Application.Quit(); ~ 47 ~ *Màn 1: + Code xử lý điều khiển game: - Di chuyển Player với phím A, D, W, S ( trái, phải, trên, ) bắn đạn với phím space ( phím cách ): ~ 48 ~ *Chú thích: Như nói phần phương thức áp dụng:    - Input.GetKey: Nhấn giữ để thực thi Input.GetKeyDown: Chỉ cần nhấn nút Input.GetKeyUp: Nhấn thả Điều khiển AI tự động khởi tạo, bay bắn: Khởi tạo: ~ 49 ~ • InvokeRepeating( string name, float timebegin, float timedelay): Thực thi nhiều lần hàm với thời gian bắt đầu ( timebegin ) thời gian trì hoãn để thực thi tiếp ( timedelay ), tham số name tên hàm cần thực thi • Instantiate( GameObject object, Vector3 position, Quaternion rotation): Hàm tạo đối tượng với vị trí xoay định theo tham số Object: đối tượng cần tạo clone ( sao) Position: vị trí cần khởi tạo Rotation: góc xoay • AI di chuyển tạo đạn: ~ 50 ~  Transform.Translate( Vector3 transition): di chuyển đối tượng theo hướng đó, biến speed * Time.deltaTime tốc độ di chuyển  thời gian thực tính giây Destroy(this.gameObject) Destroy(gameObject): hủy đối tượng  gắn script với điều kiện Hàm Instantiate để tạo đạn vị trí góc xoay  địch (AI) Chú ý: Những đối tượng cần tạo phải tạo Prefabs cho đối  tượng đó, thường đối tượng xuất nhiều lần game Để AI bắn đạn phía người chơi cần xử lý tốc độ hướng đạn: ~ 51 ~  GameObject player = GameObjec.Find(“Player”): tìm kiếm đối  tượng với tên Player gán cho biến player để thao tác Direction = player.transform.position – transform.position: biến direction kiểu Vector3 nhận giá trị vector hướng từ vị trí AI đến  người chơi Ở hàm Update() 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ả thời gian game bắt đầu đến kết thúc frame  cuối cùng, trả đơn vị giây theo thời gian thực Định dạng hiển thị thời gian: ~ 52 ~ SceneManager.GetActiveScene().buildIndex: trả giá trị index kiểu int scene *Màn Boss:  Khi chuyển từ scene sang scene khác đối tượng bị hủy, để chuyển đối tượng cần thiết sang boss ta dùng hàm: ~ 53 ~ DontDestroyOnLoad(gameObject);  Ở boss có xử lý khó mà em cần tham khảo việc boss di chuyển lên xuống tuần hoà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 điểm Đoạn code ta cần khởi tạo đối tượng Upposition downposition  làm điểm giới hạn di chuyển đối tượng Ta tăng giảm tốc độ di chuyển qua tham số Traveltime, traveltime lớn đối tượng di chuyển chậm *Màn thua: ~ 54 ~  Sau số HP người chơi = sau vài giây chuyển  qua Điểm scene việc lưu tên, tính tổng điểm người chơi với nút Save scores Vì PlayerPrefs có hạn chế việc lưu trữ load liệu nên ta lưu trữ dạng File • Tạo class tĩnh SaveLoadinfo với hàm Save() Load() , 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 truy • • xuất biến hàm class từ class khác Hàm Save(): Khởi tạo ghi liệu vào file Hàm Load(): Kiểm tra xem file có tồn ko, có load liệu gán cho biến đó, đoạn code ta lưu vào1 list lên • load cần gán giá trị cho list Lớp scoreinfo đối tượng list chứa thông tin người chơi như: tên, điểm số *Màn chiến thắng: ~ 55 ~ Cách xử lý tương tự thua thêm hiệu ứng pháo hoa với việc sử dụng Particle system *Bảng xếp hạng: ~ 56 ~  Những xử lý quan trọng phần sở liệu, cách load liệu  từ file bảng, xếp hạng người chơi theo điểm số Để show liệu bảng trước hết cần có liệu, ta gọi hàm Load() class SaveLoadinfo: SaveLoadinfo.Load()  Xếp hạng người chơi theo điểm số: Vì liệu lưu vào list nên ta có hàm Sort() dễ dàng xếp thứ tự đối tượng list theo điều kiện Hàm Sort() thực đối tượng class scoreinfo thêm IComparable, hàm so sánh giá trị với giá trị thứ thêm vào giá trị lớn xếp lên trước ~ 57 ~ 3.2 Mục tiêu đề tài - Đã nắm bắt số xử lý Unity sử dụng loại lưu trữ database là: PlayerPrefs dạng file - Mục tiêu : + Biết sử dụng nhiều loại database để làm game Unity, nâng cao xử lý hiệu ứng game : âm thanh, hình ảnh… + Có thể làm nhiều thể loại game 2D, 3D 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/ http://www.stdio.vn/articles/read/317/luu-tru-thong-tin-game-voi-playerprefs ~ 58 ~ http://share3dvn.blogspot.com/2011/12/unity-nang-cao-p5-database.html ~ 59 ~ Kết Luận Cùng với phát triển kinh tế, xã hội giới nhu cầu giải trí ngày cao người Một nhu cầu giải trí chơi game, hình thức giải trí dành cho lứa tuổi lúc rảnh rỗi hay căng thẳng công việc Là lập trình viên hay người có hứng thú với game nên tìm hiểu làm game mà mong muốn, điều giúp cho đất nước ngày phát triển kinh tế tư người ~ 60 ~ [...]... Đối với thuộc tính là GameObject chúng ta có thể nhấn vào nút đỏ, sau đó chọn prefabs cho đối tượng ở bảng mới hiện ra e2 Một số xử lý cơ bản - Truy cập vào đối tượng game hiện tại thông qua this.gameObject - Thay đổi vị trí, tỉ lệ, quay đối tượng thông qua gameObject.transform(.position, scale, rotate) - Để huỷ một đối tượng game Destroy(GameObject) (*) - Để tạo một prefab trong quá trình thực thi game: ... một game object Ta sử dụng thuộc tính này mục đích xác định và phân biệt các đối tượng với nhau, khi xử lý sự kiện hay bất kể vấn đề gì cần Tag ~ 14 ~ Thêm tag mới Danh sách tag b Sprite - Có 2 loại sprite là Single sprite và Multiple sprite Single sprite ~ 15 ~ Multiple sprite b1 Single sprite Ở cửa sổ Project, chọn thư mục Assets, Right-Click vào thư mục Sprites, chọn Import New Assets, sau đó tìm. .. trên chúng ta đã tìm hiểu cách tạo các clip hay các hành động của một animation Với một animation như vậy ta sẽ có một Controller Phần này sẽ biểu diễn cách chuyển qua lại giữa các hành động bằng máy trạng thái ~ 22 ~ Ở cửa sổ Hierarchy chọn đối tượng MainCharacter, chọn Menu, chọn Window, chọn Animator, cửa sổ Animator sẽ xuất hiện như sau: Danh sách các state, mỗi state tương ứng với một clip ~ 23... thành một đường thẳng, và đặt lại vị trí đối tượng MainCharacter ở vị trí nằm trên đường thẳng này như hình vẽ e Script và điều khiển máy trạng thái e1 Script Script là một tập tin (cũng là Game Component) chứa các mã điều khiển cho một đối tượng nào đó trong game, được viết bằng C# hay Javascript hoặc BOO Để tạo script ta click chuột phải ở thư mục Scripts/Create/C# Script ~ 29 ~ Với mỗi script tạo ra,... Project, ta sẽ tạo sẵn các thư mục để chứa tất cả các tài nguyên có sử dụng trong game sau này lần lượt là: Animations, Prefabs, Scripts, Sprites, Sounds, Scenes Right-Click vào thư mục Assets ở cửa sổ Project, ta chọn Create, chọn Folder ~ 11 ~ Kết quả như hình sau: 2.1.3 Khởi tạo các đối tượng cơ bản a GameObject a1 Empty Object - Ở menu ta chọn GameObject, chọn Create Empty ~ 12 ~ - Hoặc click chuột... được bấm (key dọc) - OnMouseDown, OnMouseUp, OnMouseDrag các hàm xử lý chuột - gameObject.GetComponent() get Game Component được đính kèm trong gameObject hiện tại có thể là: Animator, Transform 2.2 Thành phần vật lý và xử lý va chạm ~ 33 ~ 2.2.1 Thêm thành phần vật lý - Thành phần vật lý hỗ trợ các thao tác về vật lý như: tác dụng lực, trọng lực trái đất, ma sát Để thêm thành phần vật... điều kiện) bằng cách nhấn dấu cộng hoặc dấu trừ để bỏ bớt một điều kiện Vậy mỗi khi ta set giá trị tham số isRunning = true, trạng thái nhân vật sẽ chuyển sang Running Tương tự ta thiết lập isIdle, isJump cho các transition khác Cuối cùng, ở cửa sổ Hierarchy, ta chọn MainCharacter, ở cửa sổ Inspector, mục Animator, ta bỏ chọn Apply Root Motion ~ 27 ~ Đến đây, chúng ta đã biết cách xây dựng một animation... cho Empty GameObject - Tạo một Empty GameObject, đặt tên là Ground Sau đó chọn đối tượng này, ở cửa sổ Inspector ta chọn Add Component sau đó chọn Rendering, chọn Sprite Render Tiếp theo, ở mục Sprite Render ở cửa sổ Inspector, ta chọn Sprite để hiển thị (Nút khoan tròn đỏ) ~ 19 ~ c Animation Một animation là một hình ảnh động mô tả một đối tượng nào đó trong game Ví dụ: có thể là một chiếc xe đang chạy,... chiếc xe đang chạy, hay một nhân vật đang đi Một animation trong Unity có thể bao gồm nhiều hành động, một hành động như vậy gọi là một clip Ví dụ: một nhân vật có thể có các hành động đi, đứng, nhảy Có hai kỹ thuật để tạo animation (cả 2D và 3D): đó là kỹ thuật key frame và kỹ thuật skeletal hay spine c1 Kỹ thuật tạo animation ~ 20 ~ *Kỹ thuật tạo key frame Đối với kỹ thuật key frame, người ta sử dụng... khác a2 Parent object và Child object ~ 13 ~ Parent object : là một đối tượng chứa các đối tượng con khác, gắn liền với nhau Child object: là một đối tượng nằm trong một đối tượng khác, gắn liền với nhau - Để tạo các đối tượng parent và child, ta chỉ việc kéo thả một đối tượng có sẵn vào trong đối tượng đã có trong cửa sổ Hierarchy Khi thay đổi các đối tượng con thì chỉ có tác động trên đối tượng con

Ngày đăng: 09/09/2016, 20:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w