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