編寫游戲中的跳躍功能
在游戲開發(fā)中,跳躍是一個(gè)非常常見的動(dòng)作。無論是平臺游戲還是角色扮演游戲,跳躍都是不可避免的。在Gamemaker2中實(shí)現(xiàn)跳躍功能也是非常簡單的,接下來我們一起來看看。1. 創(chuàng)建重力變量當(dāng)我們進(jìn)行跳躍時(shí)
在游戲開發(fā)中,跳躍是一個(gè)非常常見的動(dòng)作。無論是平臺游戲還是角色扮演游戲,跳躍都是不可避免的。在Gamemaker2中實(shí)現(xiàn)跳躍功能也是非常簡單的,接下來我們一起來看看。
1. 創(chuàng)建重力變量
當(dāng)我們進(jìn)行跳躍時(shí),人物必然會(huì)掉落,因此我們需要?jiǎng)?chuàng)建一個(gè)重力變量來模擬這個(gè)過程。打開Gamemaker2,在object的Create事件中添加以下代碼:
```
grav 0.5; // 設(shè)置重力加速度
vspd 0; // 設(shè)置垂直速度
```
以上代碼中,我們設(shè)置了重力加速度為0.5,并將垂直速度初始化為0。
2. 設(shè)置重力方向
在設(shè)置完重力速度后,我們需要限制重力方向。我們不能讓對象朝上運(yùn)動(dòng),否則就沒有跳躍效果了。在object的Step事件中添加以下代碼:
```
vspd grav; // 增加垂直速度
if (vspd > 10) vspd 10; // 設(shè)置最大垂直速度
```
代碼中,我們將垂直速度增加重力加速度grav,然后將其限制在一定范圍內(nèi)(這里是10),以防止速度過快。
3. 檢測著陸位置
當(dāng)我們進(jìn)行跳躍時(shí),需要檢測我們跳躍到達(dá)的位置是否能夠著陸。如果有其他障礙物或空盒,我們需要停止跳躍。在object的Step事件中添加以下代碼:
```
var landing position_meeting(x, y vspd, obj_wall); // 檢測是否能夠著陸
if (landing) {
while (!position_meeting(x, y sign(vspd), obj_wall)) {
y sign(vspd);
}
vspd 0;
}
```
以上代碼中,我們使用position_meeting函數(shù)檢測對象是否能夠著陸。如果能夠著陸,我們使用while循環(huán)向下移動(dòng)對象,直到與障礙物相交。最后將垂直速度設(shè)為0,停止跳躍。
4. 減速過程
當(dāng)我們跳躍到達(dá)頂點(diǎn)時(shí),需要一個(gè)減速的過程,將速度由剛剛的恒定速度降低下來,以便于我們著陸。在object的Step事件中添加以下代碼:
```
if (keyboard_check_released(ord('W')) vspd < -3) vspd -3; // 跳躍高度限制
```
以上代碼中,我們使用keyboard_check_released函數(shù)來檢測鍵盤是否被釋放,同時(shí)將垂直速度限制在-3以內(nèi),以防止跳躍高度過高。
5. 添加到object中
最后,將以上代碼添加到我們的object的Step事件中,就可以實(shí)現(xiàn)跳躍功能了。如果后期用得比較多,我們可以將其繼承到其他object中使用。