[Hướng Dẫn] Rung màn hình ?
Focker_c
Posts: 1,577Registered
Hôm nay Focker sẽ làm tutorial hướng dẫn các bạn làm ra một hệ thống rung màn hình cho game.
Rất cần phải không ?
Chẳng hạn khi một cục đá rơi ập xuống thì sẽ cần hiệu ứng này đấy.
Ok, let's check this out.
Trước hết tạo 3 function :
Function script 1:
shake_screen
Function script 2:
working_shake_screen
Function script 3:
return_true_screen
Rồi bây giờ tạo 1 object để hoạt động hệ thống này của mình là ob_setup_shake_screen.
Trong object này ở event Create, đặt script như sau (Set up các biến chung) :
Cách hoạt động của hệ thống này sẽ dễ hiểu qua ví dụ sau :
Giả dụ mình bấm phím Space để rung màn hình nhé :
Rồi, khi script shake_screen bên trên được call như vậy, nó sẽ nhập các biến global vào để hoạt động trong object ob_setup_shake_screen.
Khi này sẽ rung màn hình 5 lần .
Mỗi lần rung, màn hình sẽ ngay lập tức bị đẩy đi 1 khoảng trong tầm 32-10 pixels.
Và nhờ function return_true_screen luôn hoạt động, cho nên sau mỗi step, màn hình sẽ có xu hướng thay đổi 1 pixel để khi nào trở về vị trí ban đầu mới thôi.
Khi màn mình đã vị trí ban đầu (0,0) , thì mới bắt đầu lần rung thứ 2.
Và cứ thế rung đến lần 5.
Kiểu rung là "1" nhé , tức là chỉ rung ngang. Xem thêm ở function working_shake_screen để biết các kiểu rung khác. Nếu bạn đã am hiểu về GML thì hoàn toàn có thể sửa lại kiểu rung theo ý muốn.
Hết !
Hẹn gặp lại ở các bài guide khác !
Focker C
Rất cần phải không ?
Chẳng hạn khi một cục đá rơi ập xuống thì sẽ cần hiệu ứng này đấy.
Ok, let's check this out.
Trước hết tạo 3 function :
Function script 1:
shake_screen
// Call : shake_screen(so_lan_shake,max_shake,min_shake,kieu_rung)
// so_lan_shake : so lan se rung man hinh
// max_shake : do rung toi da
// min_shake : do rung toi da
// kieu_rung : cac kieu rung khac nhau
// 1 : rung ngang , 2 : rung doc , 3 : rung ca hai.
global.so_lan_shake = argument0
global.max_shake = argument1
global.min_shake = argument2
global.kieu_rung = argument3
Function script 2:
working_shake_screen
// Call : working_shake_screen()
// He thong rung man hinh hoat dong dua tren function nay.
// Phai bat len thi moi co the call shake_screen
if global.so_lan_shake > 0 and view_xview[0]==0 and view_yview[0]==0
{
var do_rung;
do_rung = global.min_shake + random( ceil( global.max_shake - global.min_shake ) )
if global.kieu_rung = 1
{
view_xview[0] += choose(1,-1)*do_rung
}
if global.kieu_rung = 2
{
view_yview[0] += choose(1,-1)*do_rung
}
if global.kieu_rung = 3
{
view_xview[0] += choose(1,-1)*do_rung
view_yview[0] += choose(1,-1)*do_rung
}
global.so_lan_shake -= 1
}
Function script 3:
return_true_screen
// Call : return_true_screen()
// Script nay se giup dua view tro ve ban dau mot cach tu tu.
// Function nay phai luon duoc hoat dong.
if view_xview[0] < 0 {view_xview[0] += 1}
if view_xview[0] > 0 {view_xview[0] -= 1}
if view_yview[0] < 0 {view_yview[0] += 1}
if view_yview[0] > 0 {view_yview[0] -= 1}
Rồi bây giờ tạo 1 object để hoạt động hệ thống này của mình là ob_setup_shake_screen.
Trong object này ở event Create, đặt script như sau (Set up các biến chung) :
global.so_lan_shake = 0
global.max_shake = 0
global.min_shake = 0
global.kieu_rung = 1
Ở event Step, đặt script (hoạt động 2 function đã lập) :
working_shake_screen()
return_true_screen()
Cách hoạt động của hệ thống này sẽ dễ hiểu qua ví dụ sau :
Giả dụ mình bấm phím Space để rung màn hình nhé :
If "bấm phím cách" (trong object khác cũng được nhé)
{ shake_screen(5,32,10,1) }
Rồi, khi script shake_screen bên trên được call như vậy, nó sẽ nhập các biến global vào để hoạt động trong object ob_setup_shake_screen.
Khi này sẽ rung màn hình 5 lần .
Mỗi lần rung, màn hình sẽ ngay lập tức bị đẩy đi 1 khoảng trong tầm 32-10 pixels.
Và nhờ function return_true_screen luôn hoạt động, cho nên sau mỗi step, màn hình sẽ có xu hướng thay đổi 1 pixel để khi nào trở về vị trí ban đầu mới thôi.
Khi màn mình đã vị trí ban đầu (0,0) , thì mới bắt đầu lần rung thứ 2.
Và cứ thế rung đến lần 5.
Kiểu rung là "1" nhé , tức là chỉ rung ngang. Xem thêm ở function working_shake_screen để biết các kiểu rung khác. Nếu bạn đã am hiểu về GML thì hoàn toàn có thể sửa lại kiểu rung theo ý muốn.
Hết !
Hẹn gặp lại ở các bài guide khác !
Focker C
Tagged:
Comments
Lắc sẽ tạo cảm giác địa chấn liên tục thay vì chỉ ruỳnh 1 phát như cách ở topic này.