>VoDich<
Legend of Zelda
- 26/1/05
- 919
- 0
{@:
Slow time effect
Demo: http://vngmc.byethost31.com/demo/slow_time_effect.zip
- Mấy game hành động hay có chiêu này, kiểu chỉ môi trường xung quanh và đối thủ chậm lại còn ta vẫn nhanh như thường, hoặc tất cả cùng chậm, hoặc ta chậm rì còn môi trường xung quanh vẫn nhanh như gió ...
- Chậm nhưng khung hình vẫn mượt chứ không phải như 1 số bạn chỉ đơn giản là giảm room_speed, lúc đó game cà giựt
- Hiệu ứng này cũng sẽ làm game bạn mượt hơn dù fps có giảm 30->40% so với room_speed mặc định
ok let's go ->
ta tạo 1 object chính sẽ điều khiển tốc độ chung-> obj_time
trong create event:
trong step event:
ta liên tục gán cho global.fp (0 và 1) giá trị fps hiện tại, khi fps = 0 thì ta đổi gán cho global.fp giá trị frame_rate
tại sao làm điều này, vì lát nữa ta cần dùng global.fp trong phép chia mà fps đôi khi cà giựt xuống còn óc vịt nên sẽ gặp lỗi phép chia cho 0
- Xong roài, phần điều khiển chính chỉ đơn giản dzậy thoai, tiếp theo bạn tạo 2 script mới dùng cho speed và alarm. Nhân vật chính với môi trường cần 2 script riêng vì vậy là 4 script
tạo 4 script mới đặt tên fpk_speed1, fpk_speed2, fpk_alarm1, fpk_alarm2 (tên gì tùy bạn)
dành cho nhân vật ta control
fpk_speed1
fpk_alarm1
dành cho môi trường xung quanh
fpk_speed2
fpk_alarm2
ok và bây giờ là cách sử dụng. thí dụ nhân vật chính của các bạn có gravity là 0.4, khi bấm nút left thì đi sang trái với speed=5, ta liên tục gán cho 2 giá trị đó như sau (trong event step)
rất đơn giản phải không, bạn làm tương tự với các giá trị khác, chú ý chỉ riêng khi sử dụng alarm thì dùng script alarm
đó là trên nhân vật bạn điều khiển, còn với những đối tượng khác trong game bạn cũng làm y vậy nhưng dùng fpk_speed2 và fpk_alarm2
bây giờ ok roài, bạn thử vào game giảm fps, game vẫn mượt -> tuyệt quá.
sau khi giảm bạn chờ khoảng 1 -> 2 giây để game ổn định roài mới thấy hiệu quả, nếu mặc định room_speed 60 mà ko dùng cách này khi game quá nặng fps giảm còn 45 thì sẽ giật kinh, nhưng với cách này game bạn sẽ mượt hơn rất nhiều
tuy nhiên cũng có chừng mực của nó thoai, giảm quá thì sẽ gây ra các "phản ứng phụ".
- Tiếp theo tạo các hiệu ứng chậm thời gian: rất đơn giản
+ nếu mún nhân vật hành động chậm lại giảm global.frame_rate[0], mún nhanh thì tăng lên
+ nếu mún môi trường, đối thủ chậm lại giảm global.frame_rate[1], mún nhanh thì tăng lên
vậy là xong, áp dụng làm game hành động bắn súng thì tuyệt đó.
Y!M: zeroonea
:@}
-----------
đã thêm {@: :@} ^^, post vội nên quên ^^
Slow time effect
Demo: http://vngmc.byethost31.com/demo/slow_time_effect.zip
- Mấy game hành động hay có chiêu này, kiểu chỉ môi trường xung quanh và đối thủ chậm lại còn ta vẫn nhanh như thường, hoặc tất cả cùng chậm, hoặc ta chậm rì còn môi trường xung quanh vẫn nhanh như gió ...
- Chậm nhưng khung hình vẫn mượt chứ không phải như 1 số bạn chỉ đơn giản là giảm room_speed, lúc đó game cà giựt
- Hiệu ứng này cũng sẽ làm game bạn mượt hơn dù fps có giảm 30->40% so với room_speed mặc định
ok let's go ->
ta tạo 1 object chính sẽ điều khiển tốc độ chung-> obj_time
trong create event:
Mã:
global.frame_rate[0]=60 //frame rate này sẽ dành cho nhân vật ta điều khiển
global.frame_rate[1]=60 //frame rate này dành cho môi trường xung quanh
global.fp[0] = global.frame_rate[0]
global.fp[1] = global.frame_rate[1]
trong step event:
Mã:
for(i=0;i<2;i+=1){
if fps=0 then global.fp[i]=global.frame_rate[i]
else global.fp[i]=fps
}
ta liên tục gán cho global.fp (0 và 1) giá trị fps hiện tại, khi fps = 0 thì ta đổi gán cho global.fp giá trị frame_rate
tại sao làm điều này, vì lát nữa ta cần dùng global.fp trong phép chia mà fps đôi khi cà giựt xuống còn óc vịt nên sẽ gặp lỗi phép chia cho 0
- Xong roài, phần điều khiển chính chỉ đơn giản dzậy thoai, tiếp theo bạn tạo 2 script mới dùng cho speed và alarm. Nhân vật chính với môi trường cần 2 script riêng vì vậy là 4 script
tạo 4 script mới đặt tên fpk_speed1, fpk_speed2, fpk_alarm1, fpk_alarm2 (tên gì tùy bạn)
dành cho nhân vật ta control
fpk_speed1
Mã:
return (argument0*global.frame_rate[0])/global.fp[0]
Mã:
return (argument0/global.frame_rate[0])*global.fp[0]
dành cho môi trường xung quanh
fpk_speed2
Mã:
return (argument0*global.frame_rate[1])/global.fp[1]
Mã:
return (argument0/global.frame_rate[1])*global.fp[1]
ok và bây giờ là cách sử dụng. thí dụ nhân vật chính của các bạn có gravity là 0.4, khi bấm nút left thì đi sang trái với speed=5, ta liên tục gán cho 2 giá trị đó như sau (trong event step)
Mã:
gravity = fpk_speed1(0.4)
if(keyboard_check(vk_left)){
speed = fpk_speed1(5);
}
rất đơn giản phải không, bạn làm tương tự với các giá trị khác, chú ý chỉ riêng khi sử dụng alarm thì dùng script alarm
Mã:
alarm[0] = fpk_alarm(2)
đó là trên nhân vật bạn điều khiển, còn với những đối tượng khác trong game bạn cũng làm y vậy nhưng dùng fpk_speed2 và fpk_alarm2
bây giờ ok roài, bạn thử vào game giảm fps, game vẫn mượt -> tuyệt quá.
sau khi giảm bạn chờ khoảng 1 -> 2 giây để game ổn định roài mới thấy hiệu quả, nếu mặc định room_speed 60 mà ko dùng cách này khi game quá nặng fps giảm còn 45 thì sẽ giật kinh, nhưng với cách này game bạn sẽ mượt hơn rất nhiều
tuy nhiên cũng có chừng mực của nó thoai, giảm quá thì sẽ gây ra các "phản ứng phụ".
- Tiếp theo tạo các hiệu ứng chậm thời gian: rất đơn giản
+ nếu mún nhân vật hành động chậm lại giảm global.frame_rate[0], mún nhanh thì tăng lên
+ nếu mún môi trường, đối thủ chậm lại giảm global.frame_rate[1], mún nhanh thì tăng lên
vậy là xong, áp dụng làm game hành động bắn súng thì tuyệt đó.
Y!M: zeroonea
:@}
-----------
đã thêm {@: :@} ^^, post vội nên quên ^^
.