Đã kiểm tra với phiên bản: 5
- -
Khó khăn: Người mới bắt đầu
Di chuyển máy ảnh tương đối so với trình phát.Máy ảnh không di chuyển và từ vị trí hiện tại của nó
00:04 - 00:06
không thể nhìn thấy rất nhiều.
00:06 - 00:09
Chúng ta cần buộc máy ảnh vào đối tượng game thủ.
00:09 - 00:12
Trước tiên, hãy đặt vị trí của máy ảnh.
00:12 - 00:15
Hãy nâng nó lên 10 chiếc và nghiêng nó
00:15 - 00:17
giảm khoảng 45 độ.
00:17 - 00:20
Tiếp theo, hãy làm cho máy ảnh trở thành một đứa trẻ của
00:20 - 00:22
đối tượng trò chơi của người chơi.
00:22 - 00:24
Đây là thiết lập điển hình của người thứ ba,
00:24 - 00:26
với máy ảnh như một đứa trẻ của người chơi.
00:26 - 00:28
Khi chúng ta di chuyển vị trí của người chơi
00:28 - 00:30
camera di chuyển với nó.
00:31 - 00:35
Khi người chơi quay máy ảnh cũng quay.
00:37 - 00:39
Hãy nhìn vào điều này từ một vị trí mà chúng tôi
00:39 - 00:42
có thể thấy cả người chơi và đối tượng trò chơi máy ảnh.
00:43 - 00:45
Di chuyển trình phát,
00:47 - 00:49
xoay người chơi,
00:49 - 00:51
camera con di chuyển với nó.
00:52 - 00:54
Bây giờ hãy thiết lập lại trình phát và thử nghiệm.
00:56 - 01:00
Chúng tôi nhập vào di chuyển, giữ mũi tên lên để di chuyển,
01:00 - 01:02
Whoa gì đang xảy ra ở đây?
01:02 - 01:06
Được rồi, cũng như máy ảnh là một đứa trẻ trong lĩnh vực của người chơi,
01:06 - 01:09
thậm chí nghĩ rằng máy ảnh không hề di chuyển
01:09 - 01:11
liên quan đến đối tượng trò chơi của người chơi,
01:11 - 01:14
đối tượng trò chơi người chơi đang quay cuồng như điên
01:14 - 01:16
do đó quan điểm của máy ảnh quay với nó.
01:16 - 01:18
Hãy thoát khỏi chế độ chơi.
01:19 - 01:21
Không giống như trò chơi người thứ ba bình thường
01:21 - 01:24
đối tượng trò chơi người chơi của chúng tôi đang xoay trên tất cả 3 trục
01:24 - 01:26
không chỉ 1.
01:26 - 01:28
Trong thiết lập người thứ ba điển hình
01:28 - 01:31
máy ảnh như một đứa trẻ của đối tượng trò chơi người chơi
01:31 - 01:33
sẽ luôn ở trong một vị trí tương đối
01:33 - 01:35
với cha mẹ ngay lập tức,
01:36 - 01:38
và vị trí này sẽ là của cha mẹ
01:38 - 01:42
vị trí trong trò chơi, sửa đổi hoặc bù đắp bằng
01:42 - 01:44
bất kỳ giá trị nào trong biến đổi của trẻ.
01:44 - 01:46
Chúng tôi không thể có máy ảnh như một đứa trẻ của
01:46 - 01:48
người chơi, vì vậy hãy tách nó ra.
01:50 - 01:52
Giá trị bù đắp của chúng tôi sẽ là sự khác biệt
01:52 - 01:54
giữa đối tượng trò chơi người chơi và máy ảnh.
01:55 - 01:57
Bây giờ chúng ta cần kết hợp máy ảnh với
01:57 - 02:00
đối tượng trò chơi người chơi, không phải là con
02:00 - 02:01
nhưng với một kịch bản.
02:02 - 02:06
Sử dụng nút Thêm thành phần chọn Tập lệnh mới.
02:07 - 02:09
Chúng tôi đang viết bằng C #
02:11 - 02:14
và đặt tên cho kịch bản là CameraController
02:14 - 02:16
và sau đó nhấp vào Tạo và Thêm
02:16 - 02:18
hoặc chỉ cần nhấn phím trả lại hoặc nhập
02:18 - 02:20
để xác nhận lựa chọn của chúng tôi.
02:20 - 02:23
Chúng ta nên lưu ý, cách tạo kịch bản này
02:23 - 02:25
sẽ tạo nội dung tập lệnh đó trên
02:25 - 02:28
cấp độ gốc hoặc cấp cao nhất của chế độ xem dự án của chúng tôi.
02:30 - 02:32
Tập tin CameraController trong thư mục Scripts
02:33 - 02:35
và mở nó để chỉnh sửa.
02:37 - 02:39
Chúng ta cần 2 biến ở đây.
02:40 - 02:43
Tham chiếu GameObject công khai cho người chơi
02:43 - 02:49
và một vector3 riêng để giữ giá trị offset của chúng ta.
02:49 - 02:51
Bù đắp là riêng tư vì chúng tôi có thể
02:51 - 02:53
đặt giá trị đó ở đây trong tập lệnh.
02:55 - 02:57
Đối với giá trị bù đắp của chúng tôi, chúng tôi sẽ lấy
02:57 - 03:00
vị trí biến đổi hiện tại.
03:00 - 03:04
và trừ vị trí biến đổi của người chơi
03:04 - 03:07
để tìm sự khác biệt giữa hai.
03:08 - 03:14
Vì vậy, trong đầu chúng tôi có thể thực hiện bù đắp bằng
03:14 - 03:19
chuyển đổi vị trí trừ vị trí biến đổi của người chơi.
03:20 - 03:23
Và sau đó mỗi khung hình chúng tôi đặt
03:23 - 03:27
chuyển vị trí sang vị trí biến đổi của trình phát của chúng tôi
03:27 - 03:29
cộng với bù đắp.
03:30 - 03:32
Điều này có nghĩa là khi chúng tôi di chuyển trình phát của mình
03:32 - 03:34
với các điều khiển trên bàn phím
03:34 - 03:38
mỗi khung hình trước khi hiển thị những gì máy ảnh có thể thấy
03:38 - 03:41
máy ảnh được chuyển đến vị trí mới
03:41 - 03:43
liên kết với đối tượng Trình phát.
03:43 - 03:45
Như thể nó là một đứa trẻ của đối tượng đó
03:45 - 03:47
nếu nó không lăn quanh bảng trò chơi.
03:49 - 03:52
Tuy nhiên, cập nhật không phải là nơi tốt nhất cho mã này.
03:53 - 03:56
Đúng là bản cập nhật chạy mỗi khung
03:56 - 03:58
và cập nhật từng khung hình chúng tôi có thể theo dõi
03:58 - 04:00
vị trí của đối tượng trò chơi của người chơi
04:00 - 04:02
và đặt vị trí của máy ảnh.
04:03 - 04:06
Tuy nhiên, để theo dõi máy ảnh, hoạt ảnh thủ tục,
04:06 - 04:09
và thu thập các trạng thái đã biết cuối cùng
04:09 - 04:11
tốt nhất là sử dụng LateUpdate.
04:12 - 04:15
LateUpdate chạy mọi khung hình, giống như cập nhật.
04:16 - 04:19
Nhưng nó được đảm bảo để chạy sau khi tất cả các mục
04:19 - 04:21
đã được xử lý trong bản cập nhật.
04:21 - 04:24
Vì vậy, khi chúng tôi đặt vị trí của máy ảnh
04:24 - 04:28
chúng tôi biết hoàn toàn rằng người chơi đã di chuyển cho khung đó.
04:30 - 04:32
Vì vậy, hãy kiểm tra điều này. Hãy lưu tập lệnh của chúng tôi
04:32 - 04:34
và trở về Unity.
04:35 - 04:37
Trước tiên, chúng ta cần tạo tham chiếu đến
04:37 - 04:39
đối tượng người chơi trò chơi bằng cách kéo trình phát
04:39 - 04:43
đối tượng trò chơi trong Trình phát của người chơi
trong thành phần bộ điều khiển của máy ảnh.
04:46 - 04:48
Nhập chế độ phát
04:50 - 04:52
và bây giờ chúng ta có được hành vi mà chúng ta muốn.
04:54 - 04:56
Máy ảnh theo sau quả bóng lăn
04:56 - 04:58
mà không quay
05:01 - 05:04
ngay cả khi bóng đi qua mép.
05:05 - 05:07
Trong bài tập tiếp theo, chúng tôi sẽ thiết lập cơ bản
05:07 - 05:09
khu vực chơi và tạo và đặt
05:09 - 05:11
đối tượng đón đặc biệt.
CameraController
Expand view
Copy code
using UnityEngine;
using System.Collections;
public class CameraController : MonoBehaviour {
public GameObject player;
private Vector3 offset;
void Start ()
{
offset = transform.position - player.transform.position;
}
void LateUpdate ()
{
transform.position = player.transform.position + offset;
}
}
No comments:
Post a Comment