Tập 01 bắt đầu mọi thứ nào .
Chương 02 ánh sáng , không gian 3d
0 Bình luận - Độ dài: 2,335 từ - Cập nhật:
Làm quen với không gian 3d.
Chương 1 chúng chúng ta đã thực hiện việc làm quen với công cụ lập trình khi hiển thị “Hello World!” trên màn hình điểu khiển ; bây giờ . Bây giờ hay tạo một dự án Unity phức tạp hơn một chút khi có bối cảnh và tương tác với vật thể . Tạo một số đối tượng và cho vào trong khung cảnh đồng thời viết một vài đoạn mã để nhân vật có thể di chuyển trong khung cảnh.Về cơ bản thì chúng ta sẽ tạo một căn phòng trống không.
Unity cho phép chúng ta nắp ráp một bản thiết kế 3d ngay lập tức mà không thông qua những dòng code khởi tạo rườm rà (như 3d view hoặc một vòng lặp cốt lõi)
Khá là thú vị khi ta bắt đầu xây dựng các khung cảnh trong unity ,kể cả khi nó là một dự án đơn giản.Nhưng sẽ rất tôt nếu bạn nên kế hoạch về việc bạn sẽ làm gì tiếp theo, và nó đặc biệt quan trọng bởi khi bạn đang làm quen với một cách làm mới .
2.1 Trước khi bắt đầu.
Unity khá là dễ dàng cho người mới bắt đầu , nhưng có vấn đề quan trong trước khi bạn tạo xong bối cảnh . Mặc dù khi đã làm việc với một công cụ linh hoạt như Unity , bạn vẫn cần phải lắm rõ được cách hoạt động của không gian 3D, nếu không bạn sẽ rất khó để định vị một đối tượng trong không gian 3d trên khung cảnh.
2.1.1 lên kế hoạch cho dự án.
Trước khi bắt đầu lập trình bất cứ thứ gì , bạn cần phải hiểu bàn đang làm cái gì . Game design là một chủ đề khá lớn , có một lượng sách khá là khủng về việc thiết kế game. Nhưng bạn chỉ cần một bản phác thảo ngắn gọn trong bản demo này để bạn có thể lắm vững nhưng kiến thức cơ bản của thiết kế game.Bản demo này nhằm tránh việc bạn quá phân tâm vào các vấn đề thiết kế cao cấp hoặc việc học về các khái niệm lập trình.Bạn sẽ để ý đến nó sau khi nắm rõ được các vấn đề cơ bản.
Về dự án mà bạn đang học lúc này bạn sẽ học những điều cơ bản để tạo ra một hệ thống FPS(game bắn súng góc nhìn thứ nhất) đơn giản . Nó sẽ là một căn phòng và nhân vật mà người chơi sẽ là có tầm nhìn của nhân vật , và người chơi có thể điều khiển nhân vật bằng bàn phím và chuật . Sự phức tạp sẽ được lược bỏ bớt để tập trung vào cơ chế cốt lõi là di chuyển trong không gian 3D.
Bắt đầu với một lộ trình cơ bản nhất cho hệ thông FPS:
1 Tạo một căn phòng có sàn nhà , cửa , và một số bức tường.
1 thêm ánh sáng và camera
2 tạo đối tượng người chơi
3 viết hệ thông di chuyển cho nhân vật: quay camera và di chuyên với bàn phím.
Nghe có vẻ các bước khá là phức tập nhưng Unity làm nó chở lên dễ dàng hơn. Dự án này sẽ là một bản thử để bạn có thể hiểu các khái niệm trong thiết kế về FPS . Vì bạn không thể trực tiếp nhìn thấy nhân vật bạn điều khiển trong fps lên việc “Bạn” là một cục hình trụ với mắt ở trên là ổn. Bây giờ bạn chỉ cần tập trung vào việc hiểu cách hoạt động của tọa độ 3D.
2.1.2 hiểu về tọa độ 3D
Về dự án mà chúng ta đang lên kế hoạch ngay lúc này , nó chỉ có 3 thành phần chính : một căn phòng, tầm nhìn nhân vật , và hệ thống điều khiển. Tất cả những thứ đó chỉ để bạn có thể hiểu làm sao mà vị trí và cách chuyển động 3D được hiển thị trên màn hình máy tính , và nếu như bạn là một người mới thì bạn có vẻ chưa chắc đã hiểu về đồ họa 3D.
Hai trục tọa độ định nghĩa một mặt phẳng 2 chiều (2D) với tất cả các điểm nằm trên cùng một mặt phẳng. 3 chục tọa độ để định nghĩa về không gian 3D. Bởi vì trục X biểu thị cho chiều ngang của còn trục Y biểu thị cho chiều dọc, việc còn lại là chúng ta cần tưởng tượng ra một đường thẳng thứ 3 vuông góc với cả trục X,Y. Cả 3 trục X,Y,Z cho ta tọa độ về không gian 3D. Tất cả mọi thứ đề có một vị trí cố định trong màn hình với trục tọa đồ XYZ : vị trí của người chơi, vị trí của tường ..vv.
Trong màn hình làm việc của Unity chúng ta sẽ thấy chục tọa độ của 3 điểm được hiển thị ở trong thanh kiểm tra (Inspector) bạn có thể thay đổi thông tin của 3 trục để thay đổi vị trí của của đối tượng. Không nhất thiết chỉ bằng việc viết code để định vị các đối tượng mà bạn cũng có thể di chuyển các đối tượng dọc theo các trục này.
định nghĩa 3d bằng quy tắc tay trái,tay phải: trong hầu hết các trường hợp thì X chạy ngang Y chạy lên còn Z chạy vào hoặc chạy ra khỏi màn hình. Nếu bạn chỉ ngón tay trỏ theo theo Y ngón cái theo X thì ngòn giữa theo Z.
Unity thì dùng định nghĩa tay trái còn một số khác thì tay phải .
Và bây giờ thì bạn đã có một bản thiết kế cho dự án và hiểu về cách các tọa đồ được dùng để định nghĩa về vị trí của của các đối tượng trong không gian 3D.
2.2 Bắt đầu dự án : vị trí các đối tượng trong khung cảnh.
Rồi! bắt đầu tạo và đặt các đối tượng vào trong khung cảnh. Đầu tiên là các đối tượng tĩnh như là tường và sàn nhà , sau đó là ánh sáng để có thể nhìn thấy khung cảnh và vị trí của camera . Và cuối cùng là một đối tượng mô phỏng người chơi, đối tượng này được nhét script để có thể di chuyển trong cảnh .
Ở chương 1 ta đã biết về cách tạo ra một dự án mới trong Unity , và hãy tạo một cái ngay bây giờ để có thể thực hiện dự án này.
2.2.1 tạo Map
Chọn GameObject menu ở trên cùng của thanh công cụ và di chuyển đến 3D Object rồi chọn Cuber để tạo một khối trong khung cảnh.
bạn sẽ thấy thanh kiểm tra của đối tượng thông tin về vị trí của đối tượng và một vài thông tin khác mà bạn chưa cần quan tâm đến ngay lúc này.
Note:giá trị về vị trí của đối tượng có thể là bất cứ đâu mà bnaj muốn. Giá trị thường dùng nhất là mét hoặc bạn có thể đổi thành inches hoặc feet.
Tương tự như việc tạo sàn nhà , bạn cũng tạo thêm một khối khác hoặc copy paste rồi chỉnh sửa nó để tạo tường.
Tip: bạn có thể điều hướng để xem từ nhiều hướng khác nhau hoặc thu nhỏ để nhìn tổng thể . bạn có thể nhấn F để đặt lại góc nhìn với đối tượng được chọn.
Giá trị về vị trí của vật thể sẽ that đổi tùy vào cách bạn xoay nó
Và lên tống mấy cái mấy cái thành phần trong map thành một cấp để dễ quản lý.
Tip:kéo đối tượng vào trong một đối tượng trống khác gọi là lớp cha. Bằng cách thay đổi lớp cha các đối tượng trong lớp cũng sẽ thay đổi theo.
Tip: các đối tượng game rỗng thường được sử dụng theo cách này . Bằng cách liên kết các đối tượng tới một đối tượng gốc , hệ thông Phân Cấp có thể gọn gàng hơn. Chú ý : trước khi liên kết các đối tượng con lại ,bạn lên để đối tượng gốc có vị trí là 0,0,0 để không sảy ra sự ngớ ngẩn trong việc định vị các đối tượng khác.
GameObject là một đối tượng rỗng chứa các thành phần, và các thành phần này cùng nhau xác định đối tượng là gì và nó hoạt động như thế nào trong cảnh game .
Và bây giờ thì hãy tạo map của riêng bạn , nhớ là tạo đường đi cho nhân vât. Bây giờ bạn đã có một căn phòng nhưng vẫn cần phải thêm ánh sáng bởi vì nếu thiếu ánh sáng thì người chơi sẽ không nhìn thấy gì . Đến bước tiếp theo nào.
2.2.2 ánh sáng và camera.
Thông thường thì ánh sáng được để có định và có sẵn một ánh sáng mặc định . Nhưng nếu không có thì thì hay tạo một cái mới bằng cách chọn GameObject > Light và chọn Directional Light.
Các loại ánh sáng: bạn có thể tạo ra vài nguồn sáng khác nhau , tùy thuộc vào cách chúng phát sáng thì sẽ có nhưng loại nguồn sáng khác nhau.
Ánh sáng điểm (light point): loại ánh sáng này phát ra từ một điểm duy nhất và chiếu sáng về mọi hướng xung quanh , giống như một chiếc bóng đèn trong thực tế. Và càng gần với điểm sáng thì sẽ càng sáng hơn.
Ánh sáng chiếu điểm(spot light): là loại ánh sáng cũng phát ra từ một điểm duy nhất nhưng nó được giới hạn trong một hình nón cụ thể. Mặc dù chưa cần đến lắm nhưng chúng thường được sử dụng để làm nổi bật các phần cụ thể trong khung cảnh.
Ánh sáng hướng(directional light) là loại ánh sáng mà ánh sáng chiếu song song và đều đặn lên toàn bộ khung cảnh . Nó khá tương đồng với ánh sáng mặt trời.
Về vị trí và hướng của ánh sáng không có ảnh hưởng đến khả năng chiếu sáng của nó , chỉ góc chiếu sáng của nó bị thay đổi thôi. Vì vậy về cơ bản thì bạn có thể đặt nguồn sáng ở bất cứ đâu trong khung cảnh. Bạn lên để nguồn sáng ở nơi cao hơn so với map để tạo ra ánh sáng tổng thể giống như mặt trời . Và bạn nên xoay ánh sáng theo cả trục X và Y một chút để có được hiệu ứng ánh sáng tốt hơn. Bạn có thể nhìn thấy cài đặt trên thanh kiểm tra để có thể tinh chỉnh lại ánh sáng. Và như tên của nó, nó tinh chỉnh :
Độ sáng của ánh sáng. Nếu nó là ánh sáng duy nhất thì độ sáng của nó sẽ khá là mạng , nhưng vì bạn cũng thêm một số nguồn sáng khác vào lên bạn lên để ánh sáng của đèn yếu hơn một chú – cường độ vào khoảng 0,6 (Intensity) .
Đối với đèn điểm (light point) hãy để chúng xung quanh ở những điểm tối để đảm bảo tất cả các bức tường đều được thắp sáng. Bạn không nên để quá nhiều nguồn sáng vì nó sẽ giảm hiệu suất trò chơi, sẽ ổn nếu như bạn để ở một góc tường.
Một đối tượng cần thiết khác là camera . Nó là góc nhìn trực tiếp của người chơi , thông thường khi tạo dự án rỗng thí nó sẽ có sẵn một camera và bạn sẽ sử dụng nó .
Camera ở trong cùng một bản menu với ánh sáng .Camera sẽ được đặt ở trên đầu của người chơi và nó sẽ được sử dụng làm mặt của người chơi.
2.2.3 xử lý tương tác người chơi và góc nhìn.
Trong dự án này, ta sẽ sử dụng một khối cơ bản để nó đại diện cho người chơi. Ở GameObject menu chọn Capsule . Hình dạng này sẽ tạm được đại diện cho người chơi . Sau đó để nó tại một vị trí trên bản đồ mà bạn muốn làm điểm bắt đầu, rồi đặt tên cho đối tượng là Player.
Ở thanh kiểm tra bạn lên chú ý đến đối tượng này có thành phần capsule collider (tạm dịch là xử lý va trạm của vật thể có hình trụ) tương tự box collider với hình hộp . Về cơ bản thì thành phần này được tự động thêm vào khi một đối tượng 3d-2d được tạo ra . Nhưng có hơi khác một chút khi đối tượng này được đại diện cho người chơi, vì vậy thành phần của nó cũng đặc biệt hơn một chút so với các đối tượng còn lại. Xóa capsule collider của đối tượng đi và thay vào đó chúng ta sẽ gán cho nó character controller. Ở phía dưới có thanh thêm thành phần cho đối tượng , nhấp vào nó-tìm kiếm- và gán nó vào đối tượng. Lúc đó đối tượng của bạn sẽ được hiểu như là một nhân vật.
Bạn cần phải làm một bước nữa trước khi thiết lập xong đối tượng nhân vật , đó là gắn máy quay. Bạn chỉ cần chuyển camera thành con của lớp người chơi là vị trí của camera sẽ được di chuyển theo người người chơi. Bạn lên để camera cao hơn vật thể một chút để nó có thể giống với mắt của người chơi hơn.
Và bây giờ bạn đã tạo tất cả mọi thứ cần thiết trong cái kịch bản này. Tiếp đến là viết tí code để nhân vật có thể di chuyển được.
0 Bình luận