修改游戲控制方式經(jīng)驗(yàn) 開發(fā)牛人分享
《Onslaught!》移植到iOS平臺的過程中遇到了不少困難,我們認(rèn)為最難逾越的障礙莫過于獲取合適的幀速率。這一點(diǎn)以及包括音效處理在內(nèi)的問題,可以通過Game Closure的SDK獲得解決,但還是存在其他不易攻克的難關(guān),其中之一就是最基本的用戶輸入方式。
Chorome和OSX版本的《Onslaught! Arena》采用的是鼠標(biāo)和鍵盤輸入控制方式,玩家可以使用方向鍵進(jìn)行導(dǎo)航,并用鼠標(biāo)定位和發(fā)動攻擊。這種輸入方式顯然無法與觸摸屏設(shè)備兼容,為了讓手機(jī)版游戲體驗(yàn)更為流暢,我們嘗試了不同的控制方式,最終為用戶提供了兩種選擇:
control scheme(from gamasutra)
修改游戲控制方式經(jīng)驗(yàn)1.點(diǎn)觸控制
我們將這一選項(xiàng)命名為“初級”選項(xiàng),要求玩家使用一個(gè)手指控制游戲。這是一種流線型的AI控制方式,玩家點(diǎn)觸屏幕就可以引導(dǎo)游戲角色行動方向,然后該角色就會根據(jù)就近原則自動攻擊敵人或射彈。
修改游戲控制方式經(jīng)驗(yàn)2.虛擬搖桿
這是一種相對“更高級”的控制方式,要求玩家使用兩個(gè)手指控制游戲。這個(gè)機(jī)制為玩家提供了控制角色移動地點(diǎn)、方向、攻擊時(shí)間和角度等全套的操作功能。
我們經(jīng)過謹(jǐn)慎考慮和反復(fù)論證才制定出這兩個(gè)決策。首先,我們了解虛擬搖桿操作方式本身就存在一些問題,所以我們參考了許多最佳案例,研究了一些熱門射擊游戲(注:包括《迷你戈?duì)枴泛汀稁缀螒?zhàn)爭》)。通過這些調(diào)查,我們發(fā)現(xiàn)了靜態(tài)和動態(tài)這兩種虛擬搖桿控制方式。
動態(tài)虛擬搖桿(《幾何戰(zhàn)爭》所使用的控制方式)僅在玩家手指碰觸到屏幕界面時(shí),才會顯示定位點(diǎn)。角色將根據(jù)這些定位點(diǎn)進(jìn)行移動,其優(yōu)點(diǎn)在于可為玩家創(chuàng)造舒適體驗(yàn),如果他們的手指靠近屏幕邊緣,那也不會影響游戲操作。它支持那些不習(xí)慣或暫時(shí)無法將手指放在合適位置的玩家進(jìn)行無障礙的游戲操作,但這種方式的劣勢在于缺乏首要的可見指示,所以可能不容易讓玩家理解如何與游戲進(jìn)行互動,或者手指應(yīng)該點(diǎn)觸在屏幕的哪個(gè)位置。
靜態(tài)虛擬搖桿的主要特點(diǎn)是,其定位點(diǎn)會一直顯示于屏幕界面。我們決定采用這種方法,因?yàn)樗梢蕴峁┝己玫某醮误w驗(yàn),便于新玩家看到手指點(diǎn)觸的位置,除此之外,它還能避免怪物或陷阱隱藏在玩家手指之下(玩家看不到這些危險(xiǎn)),從而導(dǎo)致角色死亡的現(xiàn)象。
技術(shù)解決方案
我們提倡代碼重用,希望可以將游戲代碼輕松植入任何一個(gè)項(xiàng)目,所以就創(chuàng)建了一個(gè)搖桿類,其設(shè)置方式如下:
var stick = new Stick(40); // 40 is the size of the input
document.addEventListener(“mousemove”, function (e) {
e.preventDefault();
stick.setInputXY(e.pageX, e.pageY);
});
它很容易用以下代碼在畫布元素中實(shí)現(xiàn):
context.beginPath();
context.arc(stick.limit.x,stick.limit.y,limitSize,0,(Math.PI * 2),true);
context.stroke();