Friday, September 14, 2018

Thu thập các đối tượng Pick Up

Thu thập các đối tượng Pick Up
Đã kiểm tra với phiên bản: 5
- -
Khó khăn: Người mới bắt đầu
Thu thập các đối tượng pick-up; thảo luận về vật lý, va chạm và kích hoạt.Chúng tôi muốn có thể nhận trò chơi thu thập được

00:04 - 00:07
đối tượng khi đối tượng trò chơi người chơi của chúng tôi va chạm với chúng.

00:07 - 00:09
Để làm điều này, chúng ta cần phát hiện va chạm của chúng ta

00:09 - 00:11
giữa đối tượng trò chơi người chơi và

00:11 - 00:13
các đối tượng trò chơi PickUp.

00:13 - 00:15
Chúng ta sẽ cần phải có những va chạm này

00:15 - 00:17
kích hoạt một hành vi mới và chúng tôi sẽ cần

00:17 - 00:19
kiểm tra những va chạm này để đảm bảo chúng tôi

00:19 - 00:21
chọn đúng đối tượng.

00:21 - 00:23
Các đối tượng PickUp, hình cầu của người chơi,

00:23 - 00:25
mặt đất và các bức tường đều có

00:25 - 00:28
va chạm thông báo cho chúng tôi về va chạm.

00:29 - 00:30
Nếu chúng tôi không kiểm tra va chạm của chúng tôi để tìm hiểu

00:30 - 00:32
đối tượng nào chúng tôi đã va chạm với

00:32 - 00:34
chúng tôi có thể thu thập các đối tượng sai.

00:35 - 00:37
Chúng tôi có thể thu thập sàn nhà, hoặc các bức tường.

00:37 - 00:40
Như một vấn đề phải đối mặt nếu chúng tôi không kiểm tra va chạm của chúng tôi

00:40 - 00:42
trên khung hình đầu tiên của trò chơi, chúng tôi sẽ

00:42 - 00:44
tiếp xúc với máy bay mặt đất

00:44 - 00:45
và chúng tôi sẽ thu thập máy bay mặt đất

00:45 - 00:48
và sau đó chúng tôi sẽ rơi vào khoảng trống của không gian cảnh

00:48 - 00:50
và trò chơi về cơ bản sẽ kết thúc.

00:51 - 00:55
Đầu tiên, chúng tôi không cần người chơi của mình vẫn không hoạt động.

00:55 - 00:56
hãy đánh dấu vào ô Tích cực và

00:56 - 00:58
mang lại cho người chơi của chúng tôi.

01:00 - 01:02
Tiếp theo hãy chọn kịch bản PlayerController

01:02 - 01:04
và mở nó để chỉnh sửa.

01:04 - 01:06
Chỉ cần lưu ý, chúng tôi có thể chỉnh sửa

01:06 - 01:08
kịch bản bất kể trò chơi

01:08 - 01:09
đối tượng đang hoạt động hay không.

01:11 - 01:13
Bây giờ chúng ta đã mở tập lệnh,

01:13 - 01:14
chúng ta sẽ viết mã gì?

01:15 - 01:17
Chúng ta có thể viết máy va chạm

01:17 - 01:19
và sau đó tìm kiếm tài liệu bằng cách sử dụng

01:19 - 01:20
kết hợp phím nóng.

01:21 - 01:24
Nhưng có một cách khác mà chúng tôi có thể làm điều này là tốt.

01:25 - 01:27
Hãy quay lại Unity và xem chi tiết

01:27 - 01:29
đối tượng trò chơi người chơi của chúng tôi.

01:30 - 01:32
Những gì chúng tôi quan tâm ở đây là

01:32 - 01:34
thành phần va chạm hình cầu.

01:34 - 01:37
Trong tiêu đề của mỗi thành phần ở bên trái

01:37 - 01:39
là mũi tên hướng xuống của thành phần,

01:39 - 01:42
biểu tượng, hộp kiểm Bật

01:42 - 01:45
nếu nó có sẵn và loại thành phần.

01:46 - 01:49
Bên phải là thiết bị nhạy cảm ngữ cảnh gizmo

01:49 - 01:52
và một biểu tượng của một cuốn sách nhỏ với một dấu chấm hỏi.

01:53 - 01:54
Bây giờ đây là những gì chúng ta cần.

01:54 - 01:57
Đây là liên kết nhanh đến tham chiếu thành phần.

01:58 - 02:00
Nếu chúng ta chọn biểu tượng này, chúng ta sẽ lấy

02:00 - 02:02
không phải tham chiếu tập lệnh mà là

02:02 - 02:04
tham chiếu thành phần.

02:05 - 02:07
Chúng tôi sẽ đọc tài liệu này để tìm hiểu thêm

02:07 - 02:09
về cách sử dụng thành phần này trong ngữ cảnh

02:09 - 02:10
của trình chỉnh sửa.

02:10 - 02:13
Tuy nhiên, chúng tôi muốn tìm hiểu cách

02:13 - 02:15
kịch bản cho lớp của thành phần này.

02:15 - 02:18
Để làm điều này, chúng tôi chỉ cần chuyển sang tập lệnh

02:19 - 02:21
và chúng tôi được đưa đến tham chiếu tập lệnh

02:21 - 02:22
cho máy va chạm hình cầu.

02:23 - 02:26
Chúng tôi muốn phát hiện và kiểm tra va chạm của chúng tôi.

02:26 - 02:28
Đối với dự án này, chúng tôi sẽ sử dụng

02:28 - 02:30
OnTriggerEnter.

02:37 - 02:40
Cứ tưởng tượng nếu chúng ta nói, một thợ sửa ống nước táo bạo

02:40 - 02:43
và chúng tôi đã nhảy lên để thu thập một vòm tiền xu hoàn hảo

02:43 - 02:45
và bị trả lại lần đầu tiên khi chúng tôi

02:45 - 02:47
thu thập nó và rơi xuống đất.

02:48 - 02:49
Không phải rất thanh lịch.

02:50 - 02:52
Mã này sẽ cho chúng ta khả năng phát hiện

02:52 - 02:54
liên hệ giữa đối tượng trò chơi người chơi của chúng tôi

02:54 - 02:56
và đối tượng trò chơi PickUp của chúng tôi

02:56 - 02:59
mà không thực sự tạo ra một va chạm vật lý.

03:00 - 03:02
Ví dụ mã không chính xác

03:02 - 03:03
những gì chúng tôi đang tìm kiếm.

03:03 - 03:06
Nhưng không sao, chúng ta có thể thay đổi điều đó.

03:06 - 03:08
Đầu tiên, hãy sao chép mã,

03:09 - 03:11
và sau đó quay trở lại ứng dụng kịch bản của chúng tôi.

03:12 - 03:15
Bây giờ chúng ta quay lại kịch bản, hãy dán mã.

03:16 - 03:18
Vì chúng tôi đã sao chép mã này từ một trang web

03:18 - 03:20
hãy sửa lại indents.

03:20 - 03:21
Trong trường hợp này tôi sẽ đảm bảo

03:21 - 03:23
indents là các tab và tất cả các tab đều là

03:23 - 03:25
được căn chỉnh chính xác.

03:25 - 03:27
Tiếp theo, hãy xem mã này.

03:27 - 03:30
Chúng tôi đang sử dụng chức năng OnTriggerEnter.

03:30 - 03:32
OnTriggerEnter sẽ được Unity gọi

03:32 - 03:34
khi đối tượng trò chơi của chúng ta phản ứng đầu tiên

03:34 - 03:36
một máy va chạm kích hoạt.

03:36 - 03:38
Chúng tôi được đưa ra như một đối số

03:38 - 03:41
một tham chiếu đến bộ va chạm kích hoạt mà chúng ta đã chạm vào.

03:42 - 03:44
Đây là máy va chạm được gọi là Khác.

03:44 - 03:46
Tài liệu tham khảo này cho chúng ta một cách để có được một

03:46 - 03:48
giữ các va chạm mà chúng ta chạm vào.

03:49 - 03:51
Với mã này, khi chúng tôi chạm vào trình kích hoạt khác

03:51 - 03:54
va chạm chúng ta sẽ phá hủy đối tượng trò chơi
03:54 - 03:56
rằng máy va chạm kích hoạt được gắn vào

03:56 - 03:59
thông qua tham chiếu other.gameObject.

03:59 - 04:02
Bằng cách tiêu diệt đối tượng trò chơi đó, đối tượng trò chơi,

04:02 - 04:04
tất cả các thành phần của nó và tất cả

04:04 - 04:06
trẻ em và các thành phần của chúng được loại bỏ

04:06 - 04:08
từ hiện trường.

04:08 - 04:10
Vì lợi ích của ví dụ trong bài tập này

04:10 - 04:12
chúng tôi sẽ không phá hủy đối tượng trò chơi khác

04:12 - 04:14
chúng tôi sẽ hủy kích hoạt nó.

04:14 - 04:16
Giống như chúng ta đã hủy kích hoạt đối tượng trình phát

04:16 - 04:19
khi chúng tôi đang tạo ra các đối tượng PickUp của chúng tôi.

04:20 - 04:23
Đầu tiên, hãy loại bỏ Destroy (other.gameobject)

04:23 - 04:25
mã từ hàm.

04:25 - 04:27
Nhưng hãy dán nó xuống dưới kịch bản của chúng ta

04:27 - 04:29
như một bảng màu để làm việc.

04:30 - 04:33
Làm thế nào chúng ta sẽ hủy kích hoạt các đối tượng PickUp của chúng tôi?

04:34 - 04:35
Vâng, chúng ta có những manh mối nào?

04:36 - 04:38
Chúng ta có thể giải quyết trò chơi của người va chạm khác

04:38 - 04:41
đối tượng thông qua other.gameObject.

04:41 - 04:43
Chúng ta có thể thấy điều này ở đây trong mã mẫu.

04:43 - 04:45
Và chúng tôi muốn thử nghiệm đối tượng trò chơi khác

04:45 - 04:48
và nếu đó là đối tượng PickUp, chúng tôi muốn hủy kích hoạt

04:48 - 04:49
đối tượng trò chơi đó.

04:50 - 04:52
Vì vậy, hãy tìm kiếm GameObject

04:52 - 04:55
với sự kết hợp phím nóng của chúng tôi và xem những gì chúng tôi có thể tìm thấy.

04:56 - 04:59
Bây giờ chúng ta có trang trên GameObject.

04:59 - 05:01
Có hai mục quan trọng ở đây mà chúng tôi muốn.

05:02 - 05:04
Họ là tag,

05:04 - 05:06
cho phép chúng tôi xác định đối tượng trò chơi

05:06 - 05:09
bằng cách so sánh giá trị thẻ với chuỗi.

05:09 - 05:11
Và SetActive.

05:11 - 05:15
Đây là cách chúng tôi kích hoạt hoặc hủy kích hoạt đối tượng trò chơi thông qua mã.

05:16 - 05:18
Mục cuối cùng chúng ta cần biết là

05:18 - 05:20
So sánh thẻ.

05:20 - 05:22
So sánh thẻ cho phép chúng tôi hiệu quả

05:22 - 05:27
so sánh thẻ của bất kỳ đối tượng trò chơi nào với giá trị sting.

05:28 - 05:32
Hãy mở ba mục này, mỗi mục trong tab của riêng chúng.

05:35 - 05:39
Thẻ cho phép chúng tôi xác định đối tượng trò chơi theo giá trị thẻ.

05:40 - 05:45
Chúng tôi phải khai báo thẻ của chúng tôi trong Bảng điều khiển và Lớp trước khi sử dụng chúng.

05:46 - 05:49
Có thể kiểm tra thẻ trực tiếp với giá trị chuỗi

05:49 - 05:51
với mã như

05:51 - 05:57
nếu gameObject.tag giống như một số giá trị chuỗi.

05:57 - 06:01
Nhưng có một cách tích hợp hiệu quả hơn để làm điều này,

06:01 - 06:03
và đó là CompareTag

06:04 - 06:06
Với CompareTag chúng tôi có hiệu quả

06:06 - 06:10
so sánh thẻ của bất kỳ đối tượng trò chơi nào có giá trị chuỗi.

06:12 - 06:14
Hãy sao chép mã mẫu và

06:14 - 06:16
dán nó vào bảng làm việc của chúng tôi.

06:21 - 06:26
Bây giờ GameObject.SetActive.

06:27 - 06:30
Đây là cách chúng tôi kích hoạt hoặc hủy kích hoạt đối tượng trò chơi.

06:31 - 06:33
Đây là mã tương đương với cách nhấp

06:33 - 06:35
hộp kiểm hiện hoạt bên cạnh

06:35 - 06:37
Tên trường trong Trình kiểm tra.

06:40 - 06:42
Trong trường hợp của chúng tôi, giống như đoạn mã,

06:42 - 06:46
chúng ta sẽ gọi GameObject.SetActive (false)

06:46 - 06:48
để tắt các đối tượng trò chơi PickUp của chúng tôi.

06:50 - 06:55
Hãy sao chép mã này và quay lại trình chỉnh sửa tập lệnh của chúng tôi

06:55 - 06:57
dán nó vào bảng màu của chúng tôi.

06:59 - 07:01
Tôi cảm thấy chúng tôi có đủ phần để viết mã của chúng tôi

07:03 - 07:10
vì vậy hãy viết nếu (other.gameObject.CompareTag

07:11 - 07:13
với giá trị chuỗi của PickUp

07:14 - 07:18
và chúng tôi sẽ phải xác định thẻ này trong Unity sau.

07:19 - 07:24
other.gameObject.SetActive (false);

07:26 - 07:28
Bây giờ mã này sẽ được gọi mỗi lần

07:28 - 07:30
chúng tôi chạm vào một máy va chạm kích hoạt.

07:30 - 07:33
Chúng tôi được đưa ra một tham chiếu đến máy va chạm mà chúng tôi chạm vào,

07:33 - 07:34
chúng tôi kiểm tra thẻ của nó,

07:34 - 07:37
và nếu thẻ giống với giá trị chuỗi

07:37 - 07:40
PickUp chúng ta sẽ lấy đối tượng game khác

07:40 - 07:42
và chúng ta sẽ gọi SetActive (false),

07:42 - 07:45
sẽ hủy kích hoạt đối tượng trò chơi đó.

07:45 - 07:48
Bây giờ chúng tôi không cần mã này, chúng tôi đã tiết kiệm được nữa

07:48 - 07:51
và giữ nó sẽ chỉ gây nhầm lẫn cho trình biên dịch

07:51 - 07:52
vì vậy chúng tôi có thể xóa nó.

07:54 - 07:56
Hãy lưu tập lệnh này và quay lại Unity

07:56 - 07:57
và kiểm tra lỗi.
07:59 - 08:01
Điều đầu tiên chúng ta cần làm là thiết lập giá trị thẻ

08:01 - 08:03
cho các đối tượng PickUp.

08:03 - 08:06
Chọn nội dung prefab cho đối tượng PickUp.

08:06 - 08:08
Khi chúng tôi xem danh sách thẻ

08:08 - 08:10
chúng tôi không thấy bất kỳ thẻ nào được gọi là PickUp

08:10 - 08:12
vì vậy chúng tôi cần phải thêm một.

08:12 - 08:14
Chọn Thêm thẻ.

08:15 - 08:19
Thao tác này sẽ trả về Bảng điều khiển và Lớp.

08:19 - 08:21
Ở đây chúng ta có thể tùy chỉnh các thẻ và các lớp.

08:22 - 08:25
Lưu ý rằng danh sách này trống.

08:26 - 08:29
Để tạo thẻ tùy chỉnh mới, hãy chọn nút +

08:29 - 08:32
để thêm hàng mới vào danh sách thẻ.

08:33 - 08:37
Trong phần tử trống mới, trong thẻ trường hợp 0 ​​của chúng tôi,

08:37 - 08:40
nhập Pickup và đây là trường hợp nhạy cảm

08:40 - 08:43
và cần phải chính xác cùng một chuỗi

08:43 - 08:45
mà chúng ta có trong kịch bản của mình.

08:45 - 08:47
Nếu nghi ngờ chúng ta có thể sao chép và dán

08:47 - 08:50
chuỗi này để có được giá trị chính xác.

08:52 - 08:54
Khi chúng ta nhìn lại tài sản prefab

08:54 - 08:57
lưu ý rằng nội dung vẫn chưa được gắn thẻ.

08:57 - 09:00
Bằng cách chọn Thêm thẻ, chúng tôi đã thay đổi tiêu điểm của mình

09:00 - 09:02
từ nội dung prefab đến Trình quản lý thẻ

09:02 - 09:05
và trong Trình quản lý thẻ, chúng tôi đã tạo thẻ của mình.

09:05 - 09:07
Bây giờ chúng ta cần áp dụng tag đó

09:07 - 09:08
vào nội dung prefab.

09:09 - 09:11
Chọn lại thả xuống Thẻ

09:11 - 09:14
và xem cách chúng tôi hiện có Pickup trong danh sách.

09:14 - 09:16
Chọn thẻ này từ danh sách và nội dung

09:16 - 09:17
hiện được gắn thẻ PickUp.

09:17 - 09:20
Và với sức mạnh của prefabs

09:20 - 09:23
tất cả các phiên bản hiện được gắn thẻ PickUp.

09:25 - 09:27
Bây giờ hãy thử trò chơi của chúng tôi.

09:27 - 09:29
Lưu cảnh và vào chế độ phát.

09:33 - 09:36
Hmm, được rồi, thẻ của chúng tôi được đặt thành PickUp

09:36 - 09:38
nhưng chúng tôi vẫn đang bật ra khỏi khối PickUp

09:38 - 09:41
giống như chúng ta đang dội lên tường.

09:41 - 09:43
Vì vậy, hãy thoát khỏi chế độ chơi.

09:43 - 09:45
Trước khi chúng ta thảo luận lý do tại sao chúng ta đang nảy ra

09:45 - 09:47
các khối Pickup thay vì chọn chúng

09:47 - 09:49
chúng ta cần có một cuộc thảo luận ngắn gọn về

09:49 - 09:50
Hệ thống vật lý của Unity.

09:51 - 09:54
Tôi sẽ vào chế độ chơi cho cuộc thảo luận này.

09:58 - 10:01
Hãy nhìn vào một trong những hình khối của chúng tôi và người chơi của chúng tôi.

10:01 - 10:03
Như một sang một bên, chúng ta có thể chọn hai hoặc

10:03 - 10:05
nhiều đối tượng trò chơi cùng một lúc

10:05 - 10:07
và kiểm tra tất cả.

10:07 - 10:09
Chúng tôi làm điều này bằng cách giữ phím lệnh

10:09 - 10:12
trên mac hoặc phím điều khiển trên PC,

10:12 - 10:13
và chọn các đối tượng trò chơi.

10:14 - 10:16
Khi chúng tôi chọn nhiều đối tượng trò chơi

10:16 - 10:18
lưu ý cách thanh tra thay đổi để hiển thị

10:18 - 10:20
các thành phần và thuộc tính phổ biến

10:20 - 10:22
giá trị của các đối tượng trò chơi đã chọn.

10:23 - 10:26
Thanh tra cũng cho phép chỉnh sửa đa đối tượng.

10:26 - 10:28
Sử dụng chỉnh sửa đa đối tượng tôi sẽ

10:28 - 10:30
vô hiệu hóa trình kết xuất lưới trên cả hai

10:30 - 10:33
cầu của người chơi và khối được chọn với một cú nhấp chuột.

10:34 - 10:36
Điều này khiến chúng tôi có hai đường viền màu xanh lá cây

10:36 - 10:39
khối lượng va chạm cho hai vật thể này.

10:40 - 10:43
Làm thế nào để va chạm làm việc trong động cơ vật lý của Unity?

10:44 - 10:46
Động cơ vật lý không cho phép hai máy va chạm

10:46 - 10:47
khối lượng để chồng lên nhau.

10:47 - 10:49
Khi công cụ vật lý phát hiện rằng bất kỳ hai

10:49 - 10:52
hoặc nhiều người va chạm sẽ chồng lên khung đó

10:52 - 10:54
công cụ vật lý sẽ xem xét các vật thể và

10:54 - 10:57
phân tích tốc độ và vòng quay và hình dạng của chúng

10:57 - 10:59
và tính toán một vụ va chạm.

10:59 - 11:01
Một trong những yếu tố chính trong tính toán này

11:01 - 11:03
liệu các va chạm có tĩnh không

11:03 - 11:05
hoặc năng động.

11:05 - 11:08
Máy va chạm tĩnh thường không di chuyển

11:08 - 11:10
các phần của cảnh của bạn, như tường, sàn nhà,

11:10 - 11:12
hoặc đài phun nước ở sân trong.

11:12 - 11:15
Máy va chạm động là những thứ di chuyển

11:15 - 11:17
giống như quả cầu của người chơi hoặc một chiếc xe hơi.

11:18 - 11:20
Khi tính toán va chạm hình học tĩnh

11:20 - 11:22
sẽ không bị ảnh hưởng bởi vụ va chạm.

11:23 - 11:25
Nhưng các đối tượng năng động sẽ được.

11:25 - 11:27
Trong trường hợp của chúng ta, cầu của người chơi là năng động,

11:27 - 11:29
hoặc di chuyển hình học, và nó đang nảy

11:29 - 11:31
tắt hình học tĩnh của các hình khối.

11:32 - 11:34
Ngay khi nó bật ra khỏi hình học tĩnh

11:34 - 11:36
của các bức tường.

11:36 - 11:38
Tuy nhiên, động cơ vật lý có thể cho phép

11:38 - 11:41
thâm nhập hoặc chồng chéo của khối lượng va chạm.

11:41 - 11:43
Khi nó thực hiện công cụ vật lý này

11:43 - 11:45
vẫn tính toán khối lượng va chạm và

11:45 - 11:47
theo dõi sự va chạm chồng lên nhau.

11:48 - 11:50
Nhưng nó không thể hiện hành động chồng chéo lên nhau

11:50 - 11:53
đối tượng, nó không gây ra va chạm.

11:53 - 11:56
Chúng tôi làm điều này bằng cách làm cho những người va chạm của chúng tôi

11:56 - 11:58
trình kích hoạt hoặc trình kích hoạt trình kích hoạt.

11:58 - 12:00
Khi chúng ta làm cho những người va chạm của chúng ta kích hoạt,

12:00 - 12:02
hoặc kích hoạt va chạm, chúng ta có thể phát hiện

12:02 - 12:05
liên lạc
12:05 - 12:07
Thông báo sự kiện OnTrigger.

12:07 - 12:09
Khi một va chạm là một kích hoạt bạn có thể làm

12:09 - 12:11
những thứ thông minh như đặt kích hoạt ở giữa

12:11 - 12:14
của một cánh cửa trong trò chơi phiêu lưu,

12:14 - 12:15
và khi người chơi vào trình kích hoạt

12:15 - 12:17
cập nhật bản đồ thu nhỏ và tin nhắn phát

12:17 - 12:19
'bạn đã phát hiện ra căn phòng này'.

12:20 - 12:22
Hoặc mỗi khi người chơi của bạn đi vòng quanh

12:22 - 12:24
nhện góc rơi từ trần nhà

12:24 - 12:26
bởi vì người chơi đã đi qua một cò súng.

12:27 - 12:30
Để biết thêm thông tin về OnCollision và bật

12:30 - 12:32
thông báo kích hoạt xem các bài học được liên kết bên dưới.

12:33 - 12:35
Chúng tôi đang sử dụng OnTriggerEnter trong mã của chúng tôi

12:35 - 12:37
thay vì OnCollisionEnter.

12:37 - 12:39
Vì vậy, chúng ta cần phải thay đổi khối lượng va chạm của chúng ta

12:39 - 12:41
để kích hoạt tập.

12:41 - 12:44
Để làm điều này, chúng ta phải ra khỏi chế độ chơi.

12:46 - 12:48
Hãy chọn nội dung prefab và xem xét

12:48 - 12:50
thành phần hộp va chạm.

12:50 - 12:52
Ở đây chúng tôi chọn Kích hoạt

12:52 - 12:54
và một lần nữa sức mạnh của prefabs

12:54 - 12:58
tất cả các đối tượng PickUp của chúng tôi hiện đang sử dụng trình kích hoạt trình kích hoạt.

12:58 - 13:02
Hãy lưu cảnh của chúng ta, vào chế độ chơi và thử nghiệm.

13:02 - 13:04
Và khi người chơi của chúng tôi vào trình kích hoạt

13:04 - 13:06
chúng tôi lấy đồ vật.

13:06 - 13:08
Xuất sắc.

13:09 - 13:11
Hãy thoát khỏi chế độ chơi.

13:12 - 13:14
Mọi thứ đều tuyệt vời.

13:14 - 13:16
Chúng tôi chỉ có một vấn đề.

13:16 - 13:19
Chúng tôi đã phạm một sai lầm nhỏ,

13:19 - 13:21
và điều này liên quan đến cách Unity

13:21 - 13:22
tối ưu hóa vật lý của nó.

13:23 - 13:25
Là một tối ưu hóa hiệu suất Unity

13:25 - 13:27
tính toán tất cả các tập

13:27 - 13:29
của tất cả các trình thu thập tĩnh trong một cảnh

13:29 - 13:32
và giữ thông tin này trong bộ nhớ cache.

13:32 - 13:34
Điều này có ý nghĩa như các va chạm tĩnh

13:34 - 13:37
không nên di chuyển và điều này giúp tính toán lại điều này

13:37 - 13:39
thông tin mỗi khung hình.

13:39 - 13:42
Nơi mà chúng tôi đã làm sai lầm của chúng tôi là bằng cách xoay hình khối của chúng tôi.

13:42 - 13:46
Bất cứ lúc nào chúng ta di chuyển, xoay hoặc co giãn một máy va chạm tĩnh

13:46 - 13:49
Unity sẽ tính toán lại tất cả các trình thu thập tĩnh một lần nữa

13:49 - 13:51
và cập nhật bộ nhớ cache collider tĩnh.

13:51 - 13:54
Để tính toán lại bộ đệm, hãy lấy tài nguyên.

13:55 - 13:57
Chúng ta có thể di chuyển, xoay hoặc mở rộng quy mô

13:57 - 14:00
những kẻ va chạm thường xuyên như chúng ta muốn và Unity sẽ không

14:00 - 14:02
recache bất kỳ khối lượng va chạm.

14:02 - 14:04
Unity hy vọng chúng ta di chuyển va chạm.

14:04 - 14:06
Chúng ta chỉ cần chỉ ra cho Unity

14:06 - 14:09
va chạm rất năng động trước khi chúng ta di chuyển chúng.

14:09 - 14:12
Chúng tôi làm điều này bằng cách sử dụng thành phần cơ thể cứng nhắc.

14:12 - 14:14
Bất kỳ đối tượng trò chơi nào có máy va chạm

14:14 - 14:17
và một cơ thể cứng nhắc được coi là năng động.

14:18 - 14:20
Bất kỳ đối tượng trò chơi nào có kèm theo máy va chạm

14:20 - 14:24
nhưng không có cơ thể vật lý cứng nhắc nào được mong đợi là tĩnh.

14:24 - 14:26
Hiện tại đối tượng trò chơi PickUp của chúng tôi có

14:26 - 14:29
hộp va chạm nhưng không có cơ thể cứng nhắc.

14:29 - 14:31
Vì vậy, Unity tính toán lại tĩnh của chúng tôi

14:31 - 14:33
collider cache mỗi frame.

14:34 - 14:36
Giải pháp là thêm một cơ thể cứng nhắc

14:36 ​​- 14:38
cho các đối tượng PickUp.

14:38 - 14:41
Điều này sẽ di chuyển các khối không bị va chạm tĩnh

14:41 - 14:43
là người va chạm năng động.

14:43 - 14:45
Hãy lưu và chơi.

14:46 - 14:48
Và hình khối của chúng tôi rơi xuống sàn nhà.

14:48 - 14:51
Lực hấp dẫn kéo chúng xuống, và khi chúng được kích hoạt

14:51 - 14:53
chúng không va chạm với sàn nhà.

14:53 - 14:55
Hãy thoát khỏi chế độ chơi.

14:55 - 14:58
Nếu chúng ta nhìn vào thành phần cơ thể cứng nhắc

14:58 - 15:01
chúng ta chỉ có thể vô hiệu hóa Use Gravity,

15:01 - 15:04
mà sẽ ngăn chặn các khối được kéo xuống dưới.

15:04 - 15:06
Tuy nhiên, đây chỉ là một giải pháp một phần.

15:07 - 15:09
Nếu chúng tôi làm điều này, mặc dù hình khối của chúng tôi

15:09 - 15:11
sẽ không phản ứng với lực hấp dẫn mà họ vẫn sẽ

15:11 - 15:13
đáp ứng với lực lượng vật lý

15:13 - 15:15
Có một giải pháp tốt hơn.

15:15 - 15:18
Và đó là chọn Kinematic.

15:19 - 15:22
Khi chúng tôi làm điều này, chúng tôi thiết lập thành phần cơ thể cứng nhắc này

15:22 - 15:24
một cơ thể cứng nhắc động học.

15:24 - 15:26
Một cơ thể cứng nhắc động học sẽ không phản ứng

15:26 - 15:29
để lực lượng vật lý và nó có thể được hoạt hình

15:29 - 15:31
và di chuyển bởi nó biến đổi.

15:32 - 15:35
Điều này là rất tốt cho tất cả mọi thứ từ các đối tượng với va chạm

15:35 - 15:37
như thang máy và nền tảng di chuyển,

15:37 - 15:39
đối tượng có trình kích hoạt, như bộ sưu tập của chúng tôi

15:39 - 15:42
cần phải được làm động hoặc di chuyển bằng biến đổi của chúng.

15:42 - 15:44
Để biết thêm thông tin về cơ thể cứng nhắc

15:44 - 15:48
và là Kinematic xem các bài học liên kết dưới đây.

15:49 - 15:52
Hãy lưu cảnh của chúng tôi và vào chế độ chơi để kiểm tra.

15:52 - 15:56
Bây giờ hành vi của chúng ta giống hệt nhau và biểu diễn.

15:56 - 15:59
Vì vậy, người va chạm tĩnh không nên di chuyển,

15:59 - 16:01
như tường và sàn nhà.

16:01 - 16:03
Người va chạm động có thể di chuyển,

16:03 - 16:05
và có một cơ thể cứng nhắc kèm theo.

16:05 - 16:08
Cơ thể cứng nhắc tiêu chuẩn là
16:05 - 16:08
Các vật cứng cứng tiêu chuẩn được di chuyển bằng các lực vật lý.

16:08 - 16:10
Các vật cứng cứng được di chuyển bằng cách sử dụng

16:10 - 16:12
biến đổi của họ.

16:13 - 16:15
Trong bài tập tiếp theo, chúng tôi sẽ tính

16:15 - 16:17
đối tượng có thể sưu tập và tạo giao diện người dùng đơn giản

16:17 - 16:20
để hiển thị điểm số và tin nhắn của chúng tôi.
Mã này phản ánh trạng thái hiện tại của tập lệnh khi kết thúc bài học cụ thể này. Kịch bản này sẽ tiếp tục phát triển và trưởng thành khi chuỗi tiếp tục.

PlayerController


Expand view

Copy code
using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;

private Rigidbody rb;

void Start ()
{
rb = GetComponent<Rigidbody>();
}

No comments:

Post a Comment