Tầm nhìn của người thứ nhất

Một phần của tài liệu ứng dụng trí tuệ nhân tạo trong xây dựng game (Trang 106 - 110)

IV. Giao tiếp với các DLL

2. Cách di chuyển camera theo người chơi

2.1. Tầm nhìn của người thứ nhất

else // đang ở trên mặt đất {

force.X = 10 * KEY_FORCE.Y; // lực quay force.Y = 0;

force.Z = -0.5 * RESULT; // lực nẩy friction = 0.7; // lực ma sát dưới nền đất }

my.SKILL11 = TIME*force.X + max(1-TIME*friction,0)*my.SKILL11; // tính vận tốc tiến về phía trước

my.SKILL13 = TIME*force.Z + max(1-TIME*friction,0)*my.SKILL13; // tính vận tốc theo phương thẳng đứng

dist.X = TIME * my.SKILL11; // quãng đường tiến về phía trước dist.y = 0;

dist.Z = TIME * my.SKILL13; // quãng đường rơi xuống move_mode = ignore_passable + glide;

ent_MOVE(dist,nullvector); // di chuyển người chơi move_view(); // di chuyển camera theo

wait(1); }

Chương 4: Cài đặt

Hãy đặt viết mã nguồn như sau:

Và gọi hàm init_camera trong hàm main sau khi gọi hàm level_load. Lưu và chạy ứng dụng. Khi đó camera sẽ di chuyển theo người chơi.

Chúng ta đã định nghĩa một khung nhìn mới. Hãy tượng tượng một khung nhìn trong game. Nó chỉ là một cửa sổ. Chúng ta có thể xác định vị trí và kích thướt của cửa sổ bằng cách điều chỉnh các thuộc tính pos_x, pos_y, size_x, size_y.

Như trên, chúng ta đã định nghĩa, góc trên bên trái của khung nhìn trùng với góc trên bên trái của màn hình và có kích thướt của nó cũng bằng kích thướt của màn hình. view 1st_person { layer = 1; pos_x = 0; pos_y = 0; } function init_cameras() { camera.visible = off; 1st_person.size_x = screen_size.x; 1st_person.size_y = screen_size.y; 1st_person.genius = player; 1st_person.visible = on; } function update_views() { 1st_person.x = player.x; 1st_person.y = player.y; 1st_person.z = player.z; 1st_person.pan = player.pan; 1st_person.roll = player.roll; 1st_person.tilt = player.tilt; }

Chương 4: Cài đặt

Hàm update_views, sẽ được cập nhật sau mỗi trạng thái và thay đổi tọa độ x, y, z của camera trong game. Ở đây, chúng ta thay đổi nó đến tọa độ của người

chơi, vì thế làm cho camera ln ln ở bên trong người chơi.

Đoạn mã vẫn chưa được hoàn hảo. Ví dụ, nếu camera được đặt ở điểm trung

tâm của mơ hình người chơi, khơng ở trên đầu, là nguyên nhân làm cho khung nhìn đặt quá gần nền đất. Như vậy chúng ta chưa thể nhìn lên hoặc xuống. Chúng ta định nghĩa thêm một biến ở đầu đoạn mã.

var eye_height = 20;

và thay vì

1st_person.z = player.z;

chúng ta viết lại là:

1st_person.z = player.z + eye_height;

Nó sẽ điều chỉnh camera lên cao hơn 20 quant. Nếu giá trị này chưa được tốt, có thể điều chỉnh lại trong lúc chơi game.

Bây giờ, chúng ta muốn người chơi có thể nhìn lên hoặc nhìn xuống. Để thực hiện được, chúng ta cần các biến sau:

var tilt_1st = 0; var cam_turnspeed = 2; var max_tilt_1st = 40; và thay đổi dòng mã: 1st_person.tilt = player.tilt; thành:

1st_person.tilt = player.tilt + tilt_1st;

Chương 4: Cài đặt

Những hàm này phải được gọi trong lúc chơi game. Ví dụ, chúng ta có thể định nghĩa như thế này:

on_pgup = look_up; on_pgdn = look_down;

Hãy lưu lại và chạy thử. Không tồi, nhưng chưa có tác dụng như mong muốn. Nếu ấn một phím và giữ nó, thì khung nhìn chỉ di chuyển một ít và sẽ khơng thay đổi nữa. Chúng ta phải ấn nó nhiều lần để khung nhìn có thể di chuyển và

điều này quá chậm chạp.

Chúng ta sẽ thay đổi nó như thế nào? Thay đổi định nghĩa on_pageup

on_pagedown như sau: on_pgup = handle_pageup; on_pgdn = handle_pagedown;

Và định nghĩa 2 hàm sau:

function look_up() {

if (tilt_1st < max_tilt_1st) { tilt_1st += cam_turnspeed; } }

function look_down() {

if (tilt_1st > -max_tilt_1st) { tilt_1st -= cam_turnspeed; } }

Chương 4: Cài đặt

Theo cách này các hàm của chúng ta sẽ được gọi trong mỗi trạng thái trong khi các phím này đang được ấn. Nếu camera quay quá nhanh hoặc quá chậm, có

thể điều chỉnh giá trị cam_turnspeed. Nếu phạm vi của khung nhìn q nhỏ và

để người chơi có thể thay đổi góc nhìn nhiều hơn, hãy thay đổi biến

max_tilt_1st. Giá trị 90 ở đây có nghĩa là: người chơi có thể nhìn thẳng lên

hoặc xuống. Giá trị trên 90 tức là người chơi có thể nhìn ngược ra sau.

Một phần của tài liệu ứng dụng trí tuệ nhân tạo trong xây dựng game (Trang 106 - 110)

Tải bản đầy đủ (PDF)

(120 trang)