專(zhuān)利名稱(chēng):移動(dòng)成群字符的方法及其記錄介質(zhì)和游戲裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種移動(dòng)成群字符的方法、以及記錄介質(zhì)和游戲裝置,更具體地說(shuō)本發(fā)明涉及一種移動(dòng)成群字符的方法,它由顯示于三維虛擬空間中的、其中含有一個(gè)領(lǐng)隊(duì)字符的多個(gè)字符形成群(成群字符),并且這些成群字符向一個(gè)預(yù)定目標(biāo)點(diǎn)移動(dòng);本發(fā)明還涉及一種記錄成群字符移動(dòng)方法的存儲(chǔ)介質(zhì);最后,本發(fā)明涉及一種在預(yù)定的時(shí)間周期被調(diào)用的游戲裝置,通過(guò)操作輸入單元可以將從上述記錄介質(zhì)讀出的軟件裝入存儲(chǔ)單元,它具有一個(gè)用于計(jì)算向預(yù)定目標(biāo)點(diǎn)移動(dòng)的字符群中各字符的位置的位置計(jì)算單元,該字符群由包含一個(gè)領(lǐng)隊(duì)的多個(gè)字符形成。
參見(jiàn)圖1、圖2所示的已有技術(shù)。當(dāng)今,各種游戲軟件都是記錄在諸如CD-ROM等的記錄介質(zhì)上,并由游戲行業(yè)的相應(yīng)公司經(jīng)銷(xiāo)。這種記錄介質(zhì)是通過(guò)將其插入游戲裝置中使用的。如圖1所示,游戲裝置中最流行的家用游戲裝置10,是通過(guò)將諸如圖2示出的控制小鍵盤(pán)的輸入裝置3和電視監(jiān)視器4連接到游戲裝置的主體2而構(gòu)成的。當(dāng)玩家將記錄介質(zhì)1插入主體2時(shí),記錄在記錄介質(zhì)1上的游戲程序自動(dòng)地或者通過(guò)按動(dòng)輸入裝置3的預(yù)定按鈕裝入到游戲裝置主體2的存儲(chǔ)器RAM中,游戲就開(kāi)始了。然后,玩家就可以通過(guò)操作輸入裝置3上的各種按鈕享受游戲了。
順便說(shuō),現(xiàn)在市售的具有5個(gè)左右(多個(gè))字符的傳統(tǒng)游戲,在排序時(shí)主要以二維快速配位的方式移動(dòng)。例如,NO.8-63613號(hào)日本未決專(zhuān)利申請(qǐng)(JP-A)披露了一種給出各同行字符的技術(shù),即通過(guò)事先設(shè)定固有移動(dòng)速度、定時(shí)或各個(gè)同行字符的方向變化的概率,給出跟隨于作為領(lǐng)隊(duì)的、其移動(dòng)的排列變化符合各同行字符特性的前鋒字符的各同行字符。
根據(jù)該技術(shù),當(dāng)各同行字符實(shí)際顯示的位置被設(shè)定為目標(biāo)位置時(shí),根據(jù)前鋒字符行走的軌跡(同行字符也大致按此軌跡行走),以及顯示偏離基本位置的相對(duì)位置,來(lái)計(jì)算參考位置的向量,從而獲得同行字符的目標(biāo)位置。當(dāng)目標(biāo)位置出現(xiàn)障礙物時(shí),目標(biāo)位置置回上一個(gè)數(shù)值,并且通過(guò)目標(biāo)位置取上一個(gè)數(shù)值來(lái)確定相對(duì)位置,使得暫停同行字符。相應(yīng)地,跟隨前鋒字符的各同行字符均向未被先于該同行字符移動(dòng)的其它同行字符所占領(lǐng)的目標(biāo)位置移動(dòng)。
順便引述一種與本發(fā)明相關(guān)的技術(shù),即有關(guān)根據(jù)歐拉方法的運(yùn)動(dòng)方程的、于1988年4月出版的“視覺(jué)計(jì)算機(jī)”一書(shū)的283頁(yè)至295頁(yè)的“2.2數(shù)值積分方法”一節(jié)中的題為“動(dòng)態(tài)動(dòng)畫(huà)交互與控制”(Jane Wilhelms,Matthew Moore,和Robert Skinner)的文章。
然而,在上述JP-A No.8-63613披露的技術(shù)中,由于預(yù)定的移動(dòng)速度和預(yù)定的計(jì)時(shí)/改變方向的幾率并不隨同行字符移動(dòng)時(shí)所處的環(huán)境而變化,所以顯示相應(yīng)的同行字符以便追隨前鋒字符的移動(dòng),并且當(dāng)顯示同行字符之間精細(xì)的互易交互時(shí),它們不能移動(dòng)。即在一群諸如真實(shí)的鳥(niǎo)、馬等動(dòng)物中(獸群、羊群、牛群、狼群、鳥(niǎo)群、魚(yú)群等等),當(dāng)觀察到前鋒字符移動(dòng)時(shí)位于群中后部的鳥(niǎo)或馬并不移動(dòng),但是在為了與在它們周?chē)苿?dòng)的鳥(niǎo)或馬的運(yùn)動(dòng)相應(yīng)而調(diào)整它們的速度或方向時(shí),它們卻是移動(dòng)的。因此,上述未決申請(qǐng)中所描述的技術(shù)存在一個(gè)問(wèn)題,即實(shí)際動(dòng)物群的運(yùn)動(dòng)狀態(tài)不能由真實(shí)的感受表示出來(lái)。
鑒于上述事實(shí),本發(fā)明的一個(gè)目的是提供一種能逼真地表示成群字符間相互影響的移動(dòng)成群字符的方法,及其記錄介質(zhì)和游戲裝置。
為了解決上述問(wèn)題,本發(fā)明的第一方面是一種移動(dòng)成群字符的方法,是指在三維虛擬空間中顯示的、其中含有一個(gè)領(lǐng)隊(duì)字符的多個(gè)字符形成群,并且這些成群字符向一個(gè)預(yù)定目標(biāo)點(diǎn)移動(dòng)。該方法包括的步驟是當(dāng)在該字符的一個(gè)預(yù)定第一區(qū)域內(nèi)存在另一個(gè)字符時(shí),計(jì)算用于移動(dòng)該字符離開(kāi)另一個(gè)字符的第一加速度,并且當(dāng)此另一個(gè)字符存在于該字符的一個(gè)預(yù)定第二區(qū)域時(shí),計(jì)算能使該字符與另一個(gè)正在移動(dòng)的字符的移動(dòng)速度和方向匹配以跟隨領(lǐng)隊(duì)字符的第二加速度;根據(jù)在預(yù)定時(shí)間內(nèi)對(duì)所計(jì)算的第一加速度和第二加速度在三維虛擬空間的x、y、z各個(gè)分量求和而得到的合成加速度,計(jì)算該字符在三維虛擬空間中的位置。
根據(jù)本發(fā)明的第一方面,由于該字符向目標(biāo)位置移動(dòng)時(shí)具有的加速度,是由當(dāng)另一個(gè)字符存在于預(yù)定第一區(qū)域內(nèi)時(shí)移動(dòng)該字符離開(kāi)此另一個(gè)字符的第一加速度,和當(dāng)另一個(gè)字符存在于預(yù)定第二區(qū)域時(shí)用于使該字符與此另一個(gè)正在移動(dòng)的字符的移動(dòng)速度和方向匹配,以跟隨領(lǐng)隊(duì)字符的第二加速度,在三維虛擬空間按x、y、z各分量求和得到的,所以字符隨時(shí)根據(jù)位于第一區(qū)域和第二區(qū)域的其它字符的移動(dòng)環(huán)境改變其速度和方向進(jìn)行移動(dòng),而可以真實(shí)地顯示字符的移動(dòng)動(dòng)作。
根據(jù)本發(fā)明的第一方面,如果其中的第一區(qū)域或第二區(qū)域是由預(yù)定垂直角或以字符為中心的預(yù)定半徑確定的球形或圓形,并且第一區(qū)域的垂直角比第二區(qū)域的垂直角要大而前者的半徑小于后者的半徑,那么類(lèi)似于對(duì)自然界中動(dòng)物的觀感將被賦予該字符。因此,就可以模仿自然界中動(dòng)物的動(dòng)作顯示各字符活動(dòng)的動(dòng)作。
進(jìn)一步,通過(guò)計(jì)算當(dāng)另一個(gè)字符存在于該字符的一個(gè)預(yù)定第三區(qū)域內(nèi)時(shí)用于移動(dòng)字符離開(kāi)此另一個(gè)字符的第三加速度,并通過(guò)根據(jù)在預(yù)定時(shí)間內(nèi)由所算得的第一加速度至第三加速度在三維虛擬空間中按x、y、z各個(gè)分量的求和得到的合成加速度,計(jì)算該字符在三維虛擬空間中的位置,該字符隨時(shí)根據(jù)存在于第一區(qū)域至第三區(qū)域的其它字符的活動(dòng)環(huán)境改變其速度和方向進(jìn)行移動(dòng),可以更真實(shí)地顯示各字符的活動(dòng)動(dòng)作。在本例中,當(dāng)?shù)谝粎^(qū)域至第三區(qū)域是由預(yù)定垂直角或以該字符為中心的預(yù)定半徑確定的球形或圓形,第一區(qū)域的垂直角大于第二區(qū)域的垂直角并且第二區(qū)域的垂直角大于第三區(qū)域的垂直角,第一區(qū)域的半徑小于第二區(qū)域的半徑并且第二區(qū)域的半徑小于第三區(qū)域的半徑時(shí),類(lèi)似于對(duì)自然界中動(dòng)物的觀感可以被精巧地賦予各字符。因此,可以模仿自然界中動(dòng)物的動(dòng)作來(lái)精確顯示各字符的活動(dòng)動(dòng)作。此外,如果該字符與另一個(gè)字符之間為近距離時(shí),第一加速度急劇增加,并且當(dāng)該字符與此另一個(gè)字符之間為近距離時(shí),第三加速度以常變化率變化,則當(dāng)此字符接近此另一個(gè)字符時(shí),此字符將以高的加速度離開(kāi)此另一個(gè)字符,并且當(dāng)存在另一個(gè)遠(yuǎn)程字符時(shí),此字符將以低的加速度避開(kāi)此遠(yuǎn)程字符。由此使得字符的運(yùn)動(dòng)行為接近自然界里一群動(dòng)物中各動(dòng)物的動(dòng)作(運(yùn)動(dòng))。
此外,構(gòu)成本發(fā)明的第一方面還進(jìn)一步包括一個(gè)漫游步驟,在字符群到達(dá)目標(biāo)點(diǎn)后,字符就根據(jù)預(yù)定的信息在預(yù)定的區(qū)域內(nèi)以預(yù)定速度漫游,由此,顯示出類(lèi)似于自然界中動(dòng)物群擁擠在一起的狀態(tài)。此時(shí),當(dāng)字符在預(yù)定區(qū)域外移動(dòng)時(shí),如果字符以高于預(yù)定的速度向在預(yù)定區(qū)域內(nèi)隨機(jī)設(shè)定的參考點(diǎn)移動(dòng)直到字符回到預(yù)定區(qū)域內(nèi),那么就能夠逼真地顯示已經(jīng)離開(kāi)群體并且試圖返回他或她的群體的自然界中動(dòng)物的行為。本發(fā)明第一方面更進(jìn)一步包括粘合狀態(tài)消除步驟,當(dāng)出現(xiàn)一個(gè)字符和另一個(gè)字符粘合以致該字符處于不能活動(dòng)的粘合狀態(tài)時(shí),改變其前進(jìn)方向可以消除粘合狀態(tài)。避免產(chǎn)生由于粘合狀態(tài)而不能移動(dòng)的字符,從而避免玩家對(duì)游戲產(chǎn)生厭煩情緒,并且可以再現(xiàn)自然界中動(dòng)物不能逆向移動(dòng)的行為。
本發(fā)明的第二方面是計(jì)算機(jī)可讀記錄介質(zhì),它記錄了本發(fā)明第一方面用于移動(dòng)成群字符的方法。
本發(fā)明的第三方面是游戲裝置,可以通過(guò)操作輸入單元從記錄介質(zhì)中讀出軟件并被裝入存儲(chǔ)單元,且游戲裝置具有一個(gè)以預(yù)定周期調(diào)用的位置計(jì)算單元,用于計(jì)算向預(yù)定目標(biāo)點(diǎn)移動(dòng)的字符群中各字符的位置,該字符群是由包含一個(gè)領(lǐng)隊(duì)的多個(gè)字符組成的。其中位置計(jì)算單元包括一個(gè)第一加速度計(jì)算器,用于計(jì)算在此字符的預(yù)定第一區(qū)域內(nèi)存在另一個(gè)字符時(shí)移動(dòng)該字符離開(kāi)此另一個(gè)字符的第一加速度;一個(gè)第二加速度計(jì)算器,用于計(jì)算在此字符的預(yù)定第二區(qū)域內(nèi)存在另一個(gè)字符時(shí),使此字符與另一個(gè)字符的移動(dòng)速度和方向匹配,以緊隨領(lǐng)隊(duì)字符移動(dòng)的第二加速度;以及一個(gè)位置計(jì)算器,用于根據(jù)第一加速度和第二加速度,在三維虛擬空間中按x、y、z各個(gè)分量求和得到的合成加速度,計(jì)算字符在三維虛擬空間中的位置。
附圖及附圖的簡(jiǎn)要說(shuō)明。
圖1示出家用游戲裝置的接線(xiàn)原理示意圖;圖2示出家用游戲裝置的輸入裝置的平面示意圖;圖3示出根據(jù)本發(fā)明的實(shí)施例的游戲裝置的主體結(jié)構(gòu)的原理方框圖;圖4示出根據(jù)本發(fā)明實(shí)施例的騎兵軍團(tuán)移動(dòng)處理的流程圖;圖5示出騎兵軍團(tuán)移動(dòng)處理步驟108中的細(xì)節(jié),即騎兵軍團(tuán)移動(dòng)起始處理子程序的流程圖;圖6示出騎兵軍團(tuán)移動(dòng)處理步驟114的細(xì)節(jié),即騎兵軍團(tuán)移動(dòng)處理子程序的流程圖;圖7示出騎兵軍團(tuán)移動(dòng)處理步驟124的細(xì)節(jié),即騎兵軍團(tuán)漫游處理子程序的流程圖;圖8示出漫游處理子程序中步驟432的細(xì)節(jié),即粘合處理子程序的流程圖;圖9示出在電視機(jī)監(jiān)視器上顯示的列隊(duì)命令信息的對(duì)話(huà)屏;圖10示出在電視機(jī)監(jiān)視器上顯示的目標(biāo)命令信息的對(duì)話(huà)屏;圖11示出在電視機(jī)監(jiān)視器上顯示的軍團(tuán)特征信息的對(duì)話(huà)屏;圖12示出在電視機(jī)監(jiān)視器上顯示的目標(biāo)點(diǎn)列隊(duì)命令信息的對(duì)話(huà)屏;圖13A示出解釋貝齊爾(Bezier)曲線(xiàn)控制點(diǎn)的說(shuō)明圖,圖13B示出解釋貝齊爾(Bezier)曲線(xiàn)的說(shuō)明圖14示出在短距離區(qū)域和長(zhǎng)距離區(qū)域內(nèi)的推斥力和距離之間關(guān)系的說(shuō)明圖;圖15A、15B和15C分別示出顯示在電視機(jī)監(jiān)視器上的騎兵軍團(tuán)移動(dòng)狀態(tài)的說(shuō)明圖,由圖15A、15B和15C分別示出列隊(duì)中的騎兵軍團(tuán),分別由圖15A所示的狀態(tài)經(jīng)過(guò)預(yù)定時(shí)間之后的騎兵軍團(tuán)、以及由圖15B所示的狀態(tài)再經(jīng)過(guò)預(yù)定時(shí)間之后的騎兵軍團(tuán);圖16A、16B和16C分別示出顯示在電視機(jī)監(jiān)視器上的騎兵軍團(tuán)其它移動(dòng)狀態(tài)的說(shuō)明圖,由圖16A、16B和16C分別示出列隊(duì)中的騎兵軍團(tuán),分別由圖16A所示的狀態(tài)經(jīng)過(guò)預(yù)定時(shí)間之后的騎兵軍團(tuán)、以及由圖16B所示的狀態(tài)再經(jīng)過(guò)預(yù)定時(shí)間之后的騎兵軍團(tuán);圖17示出說(shuō)明騎兵軍團(tuán)的領(lǐng)隊(duì)所走的軌跡示意圖;圖18A和圖18B示出用于解釋將騎兵軍團(tuán)置于漫游狀態(tài)后,騎兵軍團(tuán)中騎兵的漫游狀態(tài)的示意圖,圖18A示出騎兵置于漫游圈內(nèi)的狀態(tài),圖18B示出某個(gè)騎兵位于漫游圈外的狀態(tài);以及圖19A和19B示出用于解釋騎兵的粘合狀態(tài)的說(shuō)明圖,圖19A示出推斥力從兩個(gè)騎兵的正面作用于他們時(shí)的情況,圖19B示出消除粘合狀態(tài)的情況。
下面結(jié)合優(yōu)選的實(shí)施例詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。
將參考
采用了本發(fā)明的一個(gè)視頻游戲裝置的實(shí)施例;在本實(shí)施例中,假設(shè)一群字符是一隊(duì)騎兵,這些騎兵按預(yù)定的位置列隊(duì),并且它們向一個(gè)它們將要列隊(duì)的目標(biāo)點(diǎn)移動(dòng)。
如圖3所示,游戲裝置的主體2,具有一個(gè)CPU組塊20,用作第一加速度計(jì)算器、第二加速度計(jì)算器、第三加速度計(jì)算器以及位置計(jì)算器,并控制整個(gè)游戲裝置。CPU組塊20包括一個(gè)主要用于控制數(shù)據(jù)在游戲裝置主體2中各單元之間傳輸?shù)腟CU(系統(tǒng)控制單元)、一個(gè)由高速時(shí)鐘控制的作為中央處理單元的CPU、一個(gè)存儲(chǔ)游戲裝置主體2基本控制程序的ROM、一個(gè)作為CPU的一個(gè)工作區(qū)并將游戲程序暫存在記錄介質(zhì)1中的RAM、以及一條連接這些單元的總線(xiàn)(內(nèi)部總線(xiàn))。
CPU組塊20中的SCU連接到外部總線(xiàn)25。外部總線(xiàn)25連接到一個(gè)輸入接收單元21,該輸入接收單元21從諸如控制小鍵盤(pán)等輸入裝置3接收輸入,并將該輸入信號(hào)信息傳輸?shù)紺PU組塊20;外部總線(xiàn)25還連接到一個(gè)諸如CD-ROM驅(qū)動(dòng)器等的介質(zhì)讀取單元22,該介質(zhì)讀取單元22也具有一個(gè)CPU(未在圖中示出),用于將記錄于記錄介質(zhì)1上的游戲程序讀出以傳輸?shù)紺PU組塊20;外部總線(xiàn)25還連接到一個(gè)具有VRAM(圖中未示出)的圖像處理單元23,該圖像處理單元23根據(jù)CPU組塊20傳出的信息產(chǎn)生圖像信息;外部總線(xiàn)25還連接到一個(gè)具有子CPU(圖中未示出)的聲音處理單元24,該聲音處理單元24用于處理諸如騎兵的馬蹄聲等聲音。輸入接收單元21、圖像處理單元23和聲音處理單元24同時(shí)被分別連接到輸入裝置3、電視機(jī)監(jiān)視器4和話(huà)筒5。
通過(guò)操作過(guò)程結(jié)合參考流程圖說(shuō)明本實(shí)施例。一個(gè)電源(圖中未示出)被附帶連接到游戲裝置主體2。當(dāng)接通電源開(kāi)關(guān)使游戲裝置主體2進(jìn)入操作狀態(tài)時(shí),開(kāi)始執(zhí)行示于圖4的騎兵軍團(tuán)的移動(dòng)過(guò)程。
在騎兵軍團(tuán)的移動(dòng)過(guò)程中,首先,在步驟102,保持后備狀態(tài)直到記錄介質(zhì)1插入介質(zhì)讀出單元22中并且游戲程序可讀出時(shí)為止。當(dāng)程序就緒可隨時(shí)讀出時(shí),進(jìn)入步驟104,由介質(zhì)讀出單元22讀出游戲程序并將讀出的游戲程序傳送到CPU塊20的RAM中。在后續(xù)步驟106,保持后備狀態(tài)直到按下輸入裝置3的開(kāi)始按鈕31(參見(jiàn)圖2)。當(dāng)按下開(kāi)始按鈕31時(shí),開(kāi)始執(zhí)行后續(xù)步驟108中的用于啟動(dòng)執(zhí)行向目標(biāo)點(diǎn)移動(dòng)騎兵軍團(tuán)的騎兵軍團(tuán)移動(dòng)啟動(dòng)處理子程序。
如圖5所示,在騎兵軍團(tuán)移動(dòng)啟動(dòng)處理子程序中,首先,在步驟202中,將騎兵軍團(tuán)在列隊(duì)點(diǎn)列隊(duì)的列隊(duì)命令信息顯示在電視機(jī)監(jiān)視器4上。在列隊(duì)命令信息的顯示中,存儲(chǔ)在步驟104RAM中的缺省值以對(duì)話(huà)的方式顯示,如圖9所示。圖9中,F(xiàn)ALLING-IN ORDER為列隊(duì)命令,LEADER'S POSITION為領(lǐng)隊(duì)位置,LEADER'S ORIENTATION為領(lǐng)隊(duì)的取向,NUMBER OF COLUMNS為列數(shù),NUMBER OF ROWS為行數(shù),COLUMN INTERVAL為列間距,ROW INTERVAL為行間距。
如圖15A所示,示于圖9中的“領(lǐng)隊(duì)位置”903是騎兵軍團(tuán)的軍團(tuán)領(lǐng)隊(duì)(此后簡(jiǎn)稱(chēng)領(lǐng)隊(duì))位于虛擬空間的位置,“領(lǐng)隊(duì)取向”示出在虛擬空間中領(lǐng)隊(duì)前進(jìn)的方向與水平線(xiàn)902的夾角φ,“列數(shù)”和“行數(shù)”示出除領(lǐng)隊(duì)之外騎兵軍團(tuán)的騎兵列隊(duì)的列數(shù)和行數(shù),“列間隔”和“行間隔”示出它們之間在三維虛擬空間中的間隔或空間。因此,玩家可以根據(jù)他或她的個(gè)人愛(ài)好通過(guò)操作輸入裝置3改變?nèi)笔≈怠4送?,?dāng)按下輸入裝置上對(duì)應(yīng)于圖9所示“刪除”的預(yù)定按鈕時(shí),所有被改變的數(shù)據(jù)均返回缺省值(此后與圖10和圖12相同)。在本實(shí)施例中,可自動(dòng)設(shè)定領(lǐng)隊(duì),但是也可以利用輸入裝置3來(lái)指定。在后續(xù)步驟204,保持后備狀態(tài)直到輸入裝置3上對(duì)應(yīng)于圖9所示的“OK”按鈕的預(yù)定按鈕被按下,在步驟206,列隊(duì)命令信息的列隊(duì)命令值被取出并存儲(chǔ)的RAM中。
接著,在步驟208,在電視機(jī)監(jiān)視器4上顯示有關(guān)到達(dá)騎兵軍團(tuán)的目標(biāo)位置的目標(biāo)命令(TARGET ORDER)信息。如圖10所示,對(duì)目標(biāo)命令信息的顯示是通過(guò)以對(duì)話(huà)方式顯示存儲(chǔ)在步驟104的RAM的缺省值實(shí)現(xiàn)的。如圖17所示,“目標(biāo)點(diǎn)”示出騎兵軍團(tuán)在虛擬空間的到達(dá)目標(biāo)點(diǎn)1103的位置;“突入角度”(RUSHING ANGLE)表示當(dāng)前進(jìn)方向?qū)τ诹嘘?duì)位置的夾角設(shè)定為0度時(shí)領(lǐng)隊(duì)沖入目標(biāo)點(diǎn)的角度;“目標(biāo)點(diǎn)半徑”(TARGET POINT RADIUM)表示離開(kāi)目標(biāo)點(diǎn)的半徑1107,并設(shè)定該半徑使得當(dāng)領(lǐng)隊(duì)接近具有此半徑的圓區(qū)域或球區(qū)域時(shí)能夠確定領(lǐng)隊(duì)已經(jīng)到達(dá)目標(biāo)點(diǎn);“漫游時(shí)間半徑”(WANDERING TIMERADIUS)表示離開(kāi)目標(biāo)點(diǎn)的半徑1106,并設(shè)定該半徑以使騎兵軍團(tuán)的騎兵在到達(dá)目標(biāo)點(diǎn)時(shí),在由半徑1106確定的圓內(nèi)漫游。在后續(xù)步驟210,保持后備狀態(tài)直到按動(dòng)預(yù)定的按鈕(相當(dāng)于按下OK按鈕)。步驟212,當(dāng)按下預(yù)定按鈕時(shí),目標(biāo)命令信息的目標(biāo)命令值被取出并存儲(chǔ)在RAM中。
接著,在步驟214,軍團(tuán)特征信息包括顯示在電視機(jī)監(jiān)視器4上的騎兵軍團(tuán)的特征。如圖11所示,軍團(tuán)特征(CORPS CHARACTERISTICS)信息以對(duì)話(huà)方式顯示為在步驟104中存儲(chǔ)在RAM的缺省值,并且,它可以被改變。附帶說(shuō)明,示于圖11的“近距離知覺(jué)角度”(SHORT DISTANCE PERCEPTION ANGLE)等的意義將在后面予以描述。在后續(xù)步驟216,保持后備狀態(tài)直到按下預(yù)定按鈕。步驟218,當(dāng)按下預(yù)定按鈕時(shí),軍團(tuán)特征信息的數(shù)值被取出并存儲(chǔ)在RAM中,且軍團(tuán)預(yù)定啟動(dòng)處理子程序結(jié)束,隨之程序進(jìn)入圖4所示的步驟110。
在步驟110,軍團(tuán)列隊(duì),如圖15A所示,要求騎兵軍團(tuán)的騎兵根據(jù)圖5所示步驟206的存儲(chǔ)在RAM中的列隊(duì)命令數(shù)值進(jìn)行列隊(duì)。接著,在步驟112,通過(guò)根據(jù)垂直消隱間隔判別按1/60秒(約為16.6ms)周期調(diào)用一次的垂直消隱中斷過(guò)程是否被完成來(lái)確定是否產(chǎn)生中斷。當(dāng)步驟112確定為不產(chǎn)生中斷時(shí),在后續(xù)步驟116執(zhí)行諸如一種對(duì)輸入信息(例如由輸入接收單元21輸出的視點(diǎn)改變信息)執(zhí)行的處理過(guò)程、一種使用聲音處理單元24制作游戲音響效果處理過(guò)程等的主要處理過(guò)程,隨后程序進(jìn)入步驟118。
另一方面,當(dāng)在步驟112確定為產(chǎn)生中斷時(shí),在1/60秒的中斷處理時(shí)間內(nèi)執(zhí)行用于使騎兵軍團(tuán)從列隊(duì)位置向目標(biāo)位置移動(dòng)的軍團(tuán)移動(dòng)處理子程序。如圖6所示,在軍團(tuán)移動(dòng)處理子程序中,計(jì)算包括一個(gè)領(lǐng)隊(duì)的騎兵軍團(tuán)的所有騎兵中的每個(gè)騎兵的最新位置,并且在對(duì)所有騎兵完成最新位置的計(jì)算后,將所有騎兵的最新位置信息傳送到圖像處理單元23。
首先,在步驟302,確定是否對(duì)所有的騎兵均進(jìn)行了處理。當(dāng)確定所有的騎兵未進(jìn)行處理時(shí),步驟304就確定待處理的對(duì)象是否是領(lǐng)隊(duì)。
當(dāng)確認(rèn)已對(duì)所有的騎兵進(jìn)行了處理時(shí),計(jì)算領(lǐng)隊(duì)在列隊(duì)點(diǎn)和目標(biāo)點(diǎn)之間移動(dòng)所遵循的貝齊爾曲線(xiàn)軌跡,并計(jì)算領(lǐng)隊(duì)位于貝齊爾曲線(xiàn)上的最新位置。此處描述了含有四個(gè)控制點(diǎn)的貝齊爾曲線(xiàn)。如圖13A所示,當(dāng)給定列隊(duì)點(diǎn)P0和目標(biāo)點(diǎn)P3時(shí),從列隊(duì)點(diǎn)P0到目標(biāo)點(diǎn)P3之間的一段被分成相等的三部分。分別以列隊(duì)點(diǎn)P0的方向和以逆著目標(biāo)點(diǎn)P3的突入角的方向設(shè)定點(diǎn)P1和點(diǎn)P3,使得各自的距離等于分段。如圖13B所示,貝齊爾曲線(xiàn)由一條光滑的曲線(xiàn)形成,以下將作詳細(xì)說(shuō)明。
含有四個(gè)控制點(diǎn)(P0、P1、P2、P3)的貝齊爾曲線(xiàn)上的位置由位置向量R(s)表示,位置向量R(s)通常由等式(1)給出,由四個(gè)點(diǎn)計(jì)算的整個(gè)貝齊爾曲線(xiàn)設(shè)定為1,則貝齊爾參數(shù)S(0≤S≤1)被定義為相對(duì)位置。R(S)=(1-S)3P0+3S(1-S)2P1+3S2(1-S)P2+S3P3……(1)如果是三維坐標(biāo)系,對(duì)于x、y、z坐標(biāo)中的每個(gè)坐標(biāo)均可以獲得上述等式(1),因此位置向量R(s)可以由等式(2)得到。 當(dāng)貝齊爾曲線(xiàn)由R表示時(shí),由于貝齊爾曲線(xiàn)R是由等式(1)(或等式(2))求出的一串位置向量R(S)點(diǎn)組成,并且由于貝齊爾參數(shù)S通常隨時(shí)間t的增加而逐漸由0增大到1,所以可以用t時(shí)間函數(shù)來(lái)表示貝齊爾曲線(xiàn)R,即R=R(S(t))。
假設(shè)貝齊爾曲線(xiàn)R是距離,那么可以通過(guò)貝齊爾曲線(xiàn)對(duì)時(shí)間微分獲得速度vel(t)。這樣,可以根據(jù)連鎖法利用如下等式(3)求得速度vel(t)。進(jìn)一步,可以變換等式(3)以得到等式(4)。 等式(4)右側(cè)的分母是位置矢量與自身的內(nèi)積,并且初始值為0的速度vel(t)可以根據(jù)隨后描述的歐拉方法在每次垂直消隱中斷處理中順序地獲得。上式中的dt是垂直消隱中斷處理的時(shí)間間隔,即如上所述的1/60秒。此外,dR/dS是通過(guò)將上式(2)對(duì)S微分一次得到的一個(gè)向量(x、y、z)。由于最終可以獲得dS,所以就能計(jì)算出領(lǐng)隊(duì)在貝齊爾曲線(xiàn)上的位置。因此,在每次中斷處理過(guò)程中領(lǐng)隊(duì)在貝齊爾曲線(xiàn)軌跡上移動(dòng)的狀態(tài)顯示在電視機(jī)監(jiān)視器4上。
以下參考圖17進(jìn)一步詳細(xì)說(shuō)明該移動(dòng)狀態(tài)。四個(gè)控制點(diǎn)是一個(gè)列隊(duì)點(diǎn)1101、一個(gè)點(diǎn)1109、一個(gè)點(diǎn)1108和一個(gè)目標(biāo)點(diǎn)1103,并且曲線(xiàn)1102是貝齊爾曲線(xiàn)。在每個(gè)中斷處理過(guò)程間隔,領(lǐng)隊(duì)903在貝齊爾曲線(xiàn)1102上向著目標(biāo)點(diǎn)1103移動(dòng)。當(dāng)列隊(duì)點(diǎn)和目標(biāo)點(diǎn)改變時(shí),再一次對(duì)控制點(diǎn)進(jìn)行計(jì)算。在步驟306,領(lǐng)隊(duì)的最新位置計(jì)算完成之后,軍團(tuán)移動(dòng)處理過(guò)程子程序返回步驟302。
另一方面,當(dāng)步驟304確定為否時(shí),為了避免一個(gè)騎兵與其它騎兵接觸或碰撞,在步驟308中執(zhí)行對(duì)近距離加速度的計(jì)算,用于得到使一群騎兵離開(kāi)其它群騎兵而產(chǎn)生的作為第一加速度的加速度。在此近距離加速度計(jì)算中,首先,對(duì)圖5步驟218中取出的近距離知覺(jué)角度和近距離知覺(jué)半徑進(jìn)行讀出。此處,近距離知覺(jué)角度(SHORT DISTANCE PERCEPTION ANGLE)被定義為各騎兵當(dāng)前正面可視的近距離(鄰域)目視范圍的角度,并且如圖11的區(qū)域801所示,本實(shí)施例將其缺省值設(shè)定為190°。此外,將近距離知覺(jué)半徑(SHORT DISTANCE PERCEPTION RADIUS)定義為鄰域距離,在鄰域距離,每個(gè)騎兵均可以觀察到近距離知覺(jué)角度,并且如圖11的區(qū)域801所示,本實(shí)施例將其缺省值設(shè)定為3m(米)。接著,在先前垂直消隱中斷處理過(guò)程(1/60秒之前)中存儲(chǔ)到RAM的其它騎兵的位置被讀出,并且確定在近距離區(qū)域內(nèi)是否存在另一個(gè)騎兵,該近距離區(qū)域是由近距離知覺(jué)角度和近距離知覺(jué)半徑確定的一個(gè)第一區(qū)域。
當(dāng)在區(qū)域內(nèi)存在另一個(gè)騎兵時(shí),就獲得了此騎兵與另一個(gè)騎兵之間的距離,并獲得了相應(yīng)于此距離的推斥力(近距離知覺(jué)推斥力-SHORT DISTANCEPERCEPTION FORCE)。如上所述,由于此騎兵必須避免在近距離內(nèi)與另一個(gè)騎兵接觸或碰撞,所以?xún)?yōu)先選擇當(dāng)另一個(gè)騎兵接近此騎兵時(shí),此騎兵能迅速移動(dòng)以離開(kāi)另一個(gè)騎兵。因此,如圖14所示,假設(shè)縱坐標(biāo)表示推斥力,橫坐標(biāo)表示近距離,則近距離與推斥力的關(guān)系的變化使得當(dāng)距離短(近)時(shí)推斥力就類(lèi)似一個(gè)二次函數(shù)F2急劇增大。因此,當(dāng)近距離是0時(shí),推斥力值就成為近距離最大推斥力,它在圖11所示的區(qū)域801中示出,并且當(dāng)近距離等于近距離知覺(jué)半徑時(shí),推斥力就變?yōu)?。所求得的推斥力與假定所求得的推斥力被整群騎兵所分擔(dān)的加速度相一致(參看圖11所示的區(qū)域801中的單元系統(tǒng)),并且對(duì)于αx、αy、αz各個(gè)分量求得加速度與由另一個(gè)騎兵到此騎兵的矢徑的乘積,因此將該乘積定義為近距離加速度。然后,確定在近距離區(qū)域內(nèi)是否存在此另一個(gè)騎兵之外的另一個(gè)騎兵。如果存在,就按上述方法求得推斥力并利用求得的推斥力求得近距離加速度。然后,針對(duì)x、y、z各個(gè)分量將獲得的近距離加速度與先前求得的近距離加速度相加并作為近距離加速度存儲(chǔ)在RAM中,隨之程序進(jìn)入步驟310。
另一方面,當(dāng)在近距離區(qū)域內(nèi)不存在另一個(gè)騎兵時(shí),與近距離等于近距離知覺(jué)半徑的情況相同,推斥力為0。因此,近距離加速度的αx、αy、αz各個(gè)分量以0存儲(chǔ)在RAM中,隨后子程序進(jìn)入步驟310。
在步驟310中,完成中距離加速度的計(jì)算,用于獲得作為第二加速度的、為使相鄰騎兵之間保持相同的速度而產(chǎn)生的加速度。在中距離加速度計(jì)算中,首先,讀出在步驟218取出的中距離知覺(jué)角度和中距離知覺(jué)半徑。此處,中距離知覺(jué)角度被定義為各騎兵當(dāng)前正面可視的中距離目視范圍的角度,并且如圖11的區(qū)域802所示,在本實(shí)施例中將其缺省值設(shè)定為170°,它比近距離知覺(jué)角度小。此外,將中距離知覺(jué)半徑定義為各騎兵均可以觀察到中距離知覺(jué)角度的距離。并且如圖11的區(qū)域802所示,中距離知覺(jué)角度(MIDDLE DISTANCE PERCEPTION ANGLE)和中距離知覺(jué)半徑(MIDDLE DISTANCEPERCEPTION RADIUS),本實(shí)施例將其缺省值設(shè)定為7m,它比近距離知覺(jué)半徑(3)長(zhǎng)。接著,在先前垂直消隱中斷處理過(guò)程中(1/60秒之前),存儲(chǔ)在RAM中的其它騎兵的位置被讀出,并且確定在中距離區(qū)域內(nèi)是否存在另一個(gè)騎兵,該中距離區(qū)域是由中距離知覺(jué)角度和中距離知覺(jué)半徑確定的一個(gè)第二區(qū)域。
當(dāng)在中距離區(qū)域內(nèi)不存在另一個(gè)騎兵時(shí),為了使此騎兵以最高速度緊隨領(lǐng)隊(duì),首先求出指向領(lǐng)隊(duì)的方向矢量(x、y、z)。此處,方向矢量(x、y、z)是一個(gè)單位矢量,其數(shù)值的(標(biāo)量的)大小無(wú)意義,只有其方向有用??梢酝ㄟ^(guò)計(jì)算領(lǐng)隊(duì)的位置(x、y、z)和騎兵的位置(x、y、z)的差值計(jì)算指向領(lǐng)隊(duì)的方向矢量(x、y、z),并由此產(chǎn)生一個(gè)單位矢量。接著,根據(jù)以下等式(5)計(jì)算騎兵的加速度,根據(jù)歐拉方法計(jì)算騎兵的位置,并將它們存儲(chǔ)在RAM中。然后,子例程進(jìn)入步驟312。
加速度(x、y、z)={(指向領(lǐng)隊(duì)的方向矢量(x、y、z)×最大速度)-當(dāng)前速度(x、y、z)}/速度-均衡時(shí)間參數(shù)……(5)
另一方面,當(dāng)在中距離區(qū)域內(nèi)存在其它騎兵時(shí),根據(jù)下列等式(6a)和(6b)計(jì)算用于與存在于中距離區(qū)域內(nèi)的其它騎兵的平均速度匹配的各騎兵的加速度,并且由此根據(jù)后面所描述的歐拉方法計(jì)算它們的位置,并將所計(jì)算的加速度和位置存儲(chǔ)于RAM中。之后,子程序進(jìn)入步驟312。
附帶說(shuō)明,在等式(6a)和(6b)中,速度-均衡時(shí)間參數(shù)是一個(gè)用于由移動(dòng)的速度獲得加速度的時(shí)間參數(shù),并且在本實(shí)施例中其缺省值約為0.3秒(參看圖11中的區(qū)域804,圖中MAXIMUM VELOCITY為最大速度,MAXIMUMACCELERATION為最大加速度,VELOCITY-EQUALIZING TIME PARAMETER為速度均衡時(shí)間參數(shù),WANDRING TIME VELOCITY為漫游時(shí)間速度)。
平均速度(x、y、z)=(中距離區(qū)域內(nèi)騎兵速度的和)/(中距離區(qū)域內(nèi)的騎兵數(shù))……(6a)加速度(x、y、z)={平均速度(x、y、z)-當(dāng)前速度(x、y、z)}/速度-均衡時(shí)間參數(shù)……(6b)在步驟312中,完成對(duì)遠(yuǎn)距離加速度的計(jì)算,用于獲得作為第三加速度的、為使騎兵改變前進(jìn)方向以到達(dá)無(wú)障礙觀察,從而避免在騎兵的前進(jìn)方向上接觸位于遠(yuǎn)距離區(qū)域的騎兵而產(chǎn)生的加速度。在遠(yuǎn)距離加速度計(jì)算中,首先,讀出在步驟218取出的遠(yuǎn)距離知覺(jué)角度和遠(yuǎn)距離知覺(jué)半徑。此處,遠(yuǎn)距離知覺(jué)角度被定義為當(dāng)騎兵向前移動(dòng)時(shí)的目視范圍距離的角度,并且如圖11的區(qū)域803所示,遠(yuǎn)距離知覺(jué)角度(LONG DISTANCE PERCEPTION ANGLE)、遠(yuǎn)距離知覺(jué)半徑(LONG DISTANCE PERCEPTION RADIUS)和遠(yuǎn)距離知覺(jué)推斥力((LONG DISTANCE PERCEPTION FORCE),本實(shí)施例將其缺省值設(shè)定為30°,它比中距離知覺(jué)角度小。此外,將遠(yuǎn)距離知覺(jué)半徑定義為騎兵可以觀察到遠(yuǎn)距離知覺(jué)角度的距離。并且如圖11的區(qū)域803所示,本實(shí)施例將其缺省值設(shè)定為15m,它比中距離知覺(jué)半徑長(zhǎng)。接著,在先前垂直消隱中斷處理過(guò)程(1/60秒之前)、存儲(chǔ)于RAM中的其它騎兵的位置被讀出,并且確定在遠(yuǎn)距離區(qū)域內(nèi)是否存在另一個(gè)騎兵,該遠(yuǎn)距離區(qū)域是由遠(yuǎn)距離知覺(jué)角度和遠(yuǎn)距離知覺(jué)半徑確定的一個(gè)第三區(qū)域。
當(dāng)在遠(yuǎn)距離區(qū)域內(nèi)存在另一個(gè)騎兵時(shí),求得此騎兵與另一個(gè)騎兵之間的距離并求得對(duì)應(yīng)于此距離的推斥力。如圖14所示,與近距離情況不同,在遠(yuǎn)距離區(qū)域,由于沒(méi)必要使此騎兵快速離開(kāi)另一個(gè)騎兵,所以假設(shè)橫軸表示推斥力,縱軸表示距離,則距離與推斥力之間的關(guān)系就變成線(xiàn)性函數(shù)F1。因此,當(dāng)距離是0時(shí),推斥力就變成遠(yuǎn)距離最大推斥力,示于圖11的區(qū)域803,并且當(dāng)距離等于遠(yuǎn)距離知覺(jué)半徑時(shí),推斥力為0。按x、y、z各個(gè)分量計(jì)算所得到的推斥力(當(dāng)作加速度)與從另一個(gè)騎兵到此騎兵的矢徑的乘積,由此將此乘積定義為遠(yuǎn)距離加速度。然后,確定在遠(yuǎn)距離區(qū)域內(nèi)是否存在此另一個(gè)騎兵之外的另一個(gè)騎兵。如果確認(rèn)存在,就按上式方法求得推斥力并利用求得的推斥力求得遠(yuǎn)距離加速度。然后,將獲得的遠(yuǎn)距離加速度在x、y、z的各個(gè)分量上與先前求得的遠(yuǎn)距離加速度相加,并作為遠(yuǎn)距離加速度存儲(chǔ)在RAM中,然后程序進(jìn)入步驟314。
另一方面,當(dāng)在遠(yuǎn)距離區(qū)域內(nèi)不存在另一個(gè)騎兵時(shí),與遠(yuǎn)距離等于遠(yuǎn)距離知覺(jué)半徑的情況相同,推斥力為0。因此,遠(yuǎn)距離加速度的αx、αy、αz各個(gè)分量以0存儲(chǔ)在RAM中,并且子程序進(jìn)入步驟314。
在步驟314,讀出近距離加速度、中距離加速度和遠(yuǎn)距離加速度,并累加它們的x、y、z分量以獲得一個(gè)合成加速度。在后續(xù)步驟316,計(jì)算騎兵的最新速度和最新位置并將它們存儲(chǔ)在RAM中。然后,子程序返回步驟302。此處假設(shè)當(dāng)前時(shí)間為t、經(jīng)過(guò)的時(shí)間為δt、速度為V(Vt+δt表示t+δt時(shí)刻的速度、Vt表示t時(shí)刻的速度)、加速度α(αt表示t時(shí)刻的加速度)、以及位置P(Pt+δt表示t+δt時(shí)刻的位置、Pt表示t時(shí)刻的位置),則可以根據(jù)下列等式(7)所示的歐拉方法的運(yùn)動(dòng)方程求得最新速度和最新位置。 因此,可以由等式(7)求得最新速度和最新位置,其中,最新速度=先前速度+逝去的時(shí)間×加速度最新位置=先前位置+逝去的時(shí)間×(速度+0.5×逝去的時(shí)間×加速度)在本實(shí)施例的三維坐標(biāo)系中,如等式(8)示出的,每當(dāng)中斷處理執(zhí)行時(shí),就得到最新加速度在三維坐標(biāo)系中x、y、z軸的各個(gè)分量,并且計(jì)算最新速度和最新位置,以使最新速度和最新位置的數(shù)值存儲(chǔ)于RAM中(這里省略了對(duì)存儲(chǔ)最新速度和最新位置的解釋)。 當(dāng)經(jīng)步驟302確認(rèn)已對(duì)所有的騎兵進(jìn)行處理時(shí),即完成了對(duì)騎兵軍團(tuán)中所有騎兵位置的計(jì)算,中斷端將所有騎兵最新位置的數(shù)據(jù)傳送到圖像處理單元23和騎兵移動(dòng)處理子程序,并且程序進(jìn)入圖4所示的步驟118。
因此,每間隔1/60秒,電視機(jī)監(jiān)視器上顯示一次騎兵軍團(tuán)的移動(dòng)狀態(tài)。為了便于說(shuō)明,參照示出了用于簡(jiǎn)要說(shuō)明的二維空間圖15A、15B和15C,以解釋軍團(tuán)的移動(dòng)狀態(tài)。將領(lǐng)隊(duì)903設(shè)定為領(lǐng)隊(duì)的位置(x,y)=(0,0),領(lǐng)隊(duì)的取向φ∶90°,目標(biāo)位置(x,y)=(0,150),突入角度90°。圖15A示出騎兵軍團(tuán)中騎兵的列隊(duì)狀態(tài)。當(dāng)領(lǐng)隊(duì)903移動(dòng)時(shí),首先,領(lǐng)隊(duì)后面的騎兵緊隨領(lǐng)隊(duì),就象預(yù)先知道領(lǐng)隊(duì)的移動(dòng)似的。但是,位于騎兵軍團(tuán)后部的騎兵則不能立即移動(dòng),因?yàn)樗鼈冞€擁擠在一起,所以讓它們處于一種后備狀態(tài),逐漸散開(kāi)(如圖15B所示)。當(dāng)每個(gè)騎兵周?chē)尿T兵數(shù)減少時(shí),相應(yīng)的騎兵就以散開(kāi)(展散)狀態(tài)移動(dòng)(如圖15C所示)。因此,當(dāng)玩家觀察到電視機(jī)監(jiān)視器4上顯示的騎兵軍團(tuán)的移動(dòng)狀態(tài)時(shí),每個(gè)騎兵似乎均是相應(yīng)于諸如知覺(jué)角度、知覺(jué)半徑、最大推斥力等的設(shè)定數(shù)值,根據(jù)他或她的獨(dú)立判斷而移動(dòng)的。此外,圖16A、16B、16C示出了電視機(jī)顯示器4上以此顯示的順序移動(dòng)的騎兵軍團(tuán)的各種狀態(tài),其中,將領(lǐng)隊(duì)設(shè)置成領(lǐng)隊(duì)的位置(x,y)=(-20,-10),領(lǐng)隊(duì)的取向φ=80°,目標(biāo)位置(x,y)=(20,200),突入角度80°。
圖4所示的步驟118,通過(guò)判別領(lǐng)隊(duì)是否進(jìn)入目標(biāo)點(diǎn)半徑范圍,來(lái)確定領(lǐng)隊(duì)是否到達(dá)目標(biāo)點(diǎn)。當(dāng)確認(rèn)領(lǐng)隊(duì)未到達(dá)目標(biāo)點(diǎn)時(shí),程序返回步驟112,以便騎兵軍團(tuán)如所描述的那樣向前移動(dòng)。當(dāng)確認(rèn)領(lǐng)隊(duì)已到達(dá)目標(biāo)點(diǎn)時(shí),程序進(jìn)入步驟119,其中起標(biāo)志作用的k被設(shè)置為0(k的意義將在后面予以說(shuō)明)。在后續(xù)步驟120,按步驟112同樣的方式,根據(jù)垂直消隱間隔按1/60秒(約為16.6ms)的周期調(diào)用的垂直消隱中斷過(guò)程是否被完成來(lái)確定是否產(chǎn)生中斷。如果確認(rèn)在步驟120中不產(chǎn)生中斷,則以與步驟116相同的方式完成步驟122中的主要處理過(guò)程,且程序進(jìn)入步驟126。另一方面,如果在步驟120中確認(rèn)產(chǎn)生中斷,則在由中斷引起的1/60秒內(nèi)執(zhí)行漫游處理子程序,使騎兵軍團(tuán)的所有騎兵在目標(biāo)點(diǎn)周?chē)巍?br>
如圖7所示的漫游處理子程序,首先在步驟404,對(duì)所有騎兵中的每一個(gè)騎兵均設(shè)置一個(gè)漫游參考點(diǎn),參照?qǐng)D17說(shuō)明漫游參考點(diǎn)。各騎兵的漫游參考點(diǎn)是位于以目標(biāo)點(diǎn)1103為中心的、由漫游半徑1107定義的漫游圈1105內(nèi)的一個(gè)隨機(jī)點(diǎn),并且隨機(jī)選擇每個(gè)騎兵的漫游參考點(diǎn)以使其它騎兵的各漫游參考點(diǎn)不重疊。在后續(xù)步驟406,確定k是否為1。如果確定k為1,則子程序進(jìn)入步驟422,如果確定k不為1,則在步驟408中確定是否已完成對(duì)所有騎兵的處理。如果在步驟408未完成對(duì)所有騎兵的處理,則在步驟410確定待處理的對(duì)象是否為領(lǐng)隊(duì)。
如果在步驟410確認(rèn)待處理的對(duì)象為領(lǐng)隊(duì),則在步驟412根據(jù)如下等式(9)計(jì)算加速度,隨后通過(guò)將按步驟308的方法求得的近距離加速度的x、y、z的各個(gè)分量相加來(lái)計(jì)算合成加速度,并將其當(dāng)前自身方向矢量存儲(chǔ)于RAM中。在后續(xù)步驟414,根據(jù)上述歐拉方法計(jì)算最新位置。
加速度(x,y,z)={當(dāng)前自身方向矢量(x,y,z)×漫游時(shí)間速度-當(dāng)前速度(x,y,z)/速度-均衡時(shí)間參數(shù)……(9)在下一步驟416中,確定在步驟414中計(jì)算的領(lǐng)隊(duì)的最新位置是否超出漫游圈。如果未超出漫游圈,則子程序返回步驟406。另一方面,如果超出漫游圈,在后續(xù)步驟418將k設(shè)定為1,并且子程序返回步驟406?!発”用于表示是否將軍團(tuán)的騎兵設(shè)定為漫游狀態(tài)的標(biāo)志。一旦領(lǐng)隊(duì)走出漫游圈范圍,標(biāo)志k就由0變?yōu)?,并將所有的騎兵軍團(tuán)的騎兵設(shè)定為漫游狀態(tài)。
如果在步驟410確定對(duì)象不是領(lǐng)隊(duì),則按步驟412相同的方法在步驟420中計(jì)算加速度,并存儲(chǔ)方向矢量。在步驟421中,計(jì)算最新位置,并且子程序返回步驟406。
另一方面,如果在步驟408確定已完成對(duì)所有騎兵的處理,由于已完成對(duì)所有軍團(tuán)的騎兵的處理,則在步驟434將所有騎兵的最新位置數(shù)據(jù)傳送到圖像處理單元23,并且結(jié)束漫游處理子程序,隨后程序進(jìn)入圖4所示的步驟126。因此,如圖17所示,當(dāng)領(lǐng)隊(duì)903以預(yù)定的突入角度到達(dá)漫游圈1104時(shí),領(lǐng)隊(duì)903在其以軌跡1110所示的預(yù)定角度沖向漫游圈1104的延遲線(xiàn)上,并以與漫游時(shí)間速度匹配的加速度移動(dòng)。并且,緊跟領(lǐng)隊(duì)的騎兵也以與漫游時(shí)間速度匹配的加速度移動(dòng)。
接著,在步驟422,確定是否對(duì)騎兵軍團(tuán)的所有騎兵進(jìn)行了處理。如果確認(rèn)沒(méi)有對(duì)所有的騎兵進(jìn)行處理,則在后續(xù)步驟424,讀出上一次存儲(chǔ)在RAM中的待處理騎兵的位置數(shù)據(jù)。并且在下一步驟426,確定在漫游圈之外是否存在待處理的騎兵。如果在漫游圈之外不存在待處理的騎兵,則與步驟412的方法相同,在后續(xù)步驟428計(jì)算加速度。根據(jù)歐拉方法進(jìn)一步計(jì)算位置以便在RAM中存儲(chǔ)當(dāng)前方向向量。之后,子程序進(jìn)入步驟432。如果在漫游圈之外存在待處理的騎兵,則在步驟430計(jì)算進(jìn)入漫游圈并以最高速度向著漫游參考點(diǎn)移動(dòng)的每個(gè)騎兵的加速度,并根據(jù)歐拉方法計(jì)算其位置。隨后,程序進(jìn)入步驟432。在步驟430計(jì)算加速度時(shí),首先求得漫游參考點(diǎn)(x,y,z)與當(dāng)前位置(x,y,z)之間的差值以計(jì)算方向向量,然后根據(jù)下列等式(10)計(jì)算加速度。接著,與步驟308的方法相同,將此加速度與近距離加速度按x、y、z各個(gè)分量相加以計(jì)算合成加速度。
加速度(x,y,z)={(當(dāng)前自身方向向量(x,y,z)×最大速度)-當(dāng)前速度(x,y,z)}/速度-均衡時(shí)間參數(shù)……(10)因此,如圖18A所示,騎兵1203在漫游圈1105之內(nèi)以低速漫游。如圖18B所示,當(dāng)騎兵1203上次走出漫游圈1105時(shí),騎兵1203就試圖以最高速度返回到在步驟404中為騎兵設(shè)置的漫游參考點(diǎn)B,直到他/她進(jìn)入漫游圈1105。因此,處于漫游狀態(tài)時(shí),騎兵軍團(tuán)的每個(gè)騎兵通常在漫游圈內(nèi)低速移動(dòng)。
在下一步驟432,執(zhí)行示于圖8的粘合處理了程序。在此粘合處理子程序中,例如,如圖19A所示,對(duì)存在于騎兵1301近距離區(qū)域內(nèi)的騎兵1302試圖沿騎兵1301的方向直線(xiàn)前進(jìn)的情況,即對(duì)于騎兵1301承受前方推斥力的情況進(jìn)行處理。
如圖8所示,在粘合處理子程序中,首先,在步驟502,確定近距離區(qū)域內(nèi)的另一個(gè)騎兵是否對(duì)待處理的騎兵施加了推斥力。如果確定未施加推斥力,則結(jié)束粘合處理子程序,并且漫游處理子程序返回示于圖7的步驟422。如果確定施加了推斥力,則在后續(xù)步驟504,此(各)騎兵轉(zhuǎn)動(dòng)θ角,在步驟506中將轉(zhuǎn)動(dòng)角度θ和作為方向矢量的其方向?qū)?yīng)于轉(zhuǎn)動(dòng)角度θ的單位矢量存儲(chǔ)于RAM中,且騎兵1301將沿轉(zhuǎn)動(dòng)角度θ的方向前進(jìn)。然而,如圖19A所示,當(dāng)在騎兵1301轉(zhuǎn)動(dòng)θ角度后的方向上存在有將推斥力施加到騎兵1301上的騎兵1303時(shí),因?yàn)橛薪嚯x推斥力作用在騎兵1301上,騎兵1301不能前進(jìn),并且在下一次垂直消隱中斷時(shí)引起騎兵1301轉(zhuǎn)動(dòng)-θ角度,以使騎兵1301不能移動(dòng)。因此,在后續(xù)步驟508,通過(guò)判別包括本次中斷在內(nèi)的前8次垂直消隱中斷中存儲(chǔ)在RAM中的角度和,是否接近0來(lái)確定騎兵是否被置于粘合狀態(tài),即確定他/她是否被置于不動(dòng)的狀態(tài)。如果確定此騎兵未被置于粘合狀態(tài),則結(jié)束粘合處理子程序,并且漫游處理子程返回圖7所示的步驟422。如果確定此騎兵被置于粘合狀態(tài),則在后續(xù)步驟510,計(jì)算此騎兵與其它位于近距離區(qū)域內(nèi)的所有騎兵之間的三個(gè)坐標(biāo)的差值,并且根據(jù)相應(yīng)的差值計(jì)算每個(gè)以方向矢量構(gòu)成的單位矢量以求得它們的和。此外,通過(guò)將合成矢量轉(zhuǎn)換為單位矢量而將求得的合成矢量形成方向矢量,設(shè)此方向矢量為騎兵的方向矢量(x,y,z)。因此如圖19B所示,由于騎兵1301改變了他/她的前進(jìn)方向,他/她就可以避免與其它騎兵1302、1303處于粘合狀態(tài),以使游戲繼續(xù)進(jìn)行。在后續(xù)步驟512中,通過(guò)將步驟510計(jì)算的方向矢量(x,y,z)乘以最大加速度來(lái)計(jì)算加速度。在步驟514,可以根據(jù)歐拉方法獲得最新速度和最新位置。這樣,就結(jié)束粘合處理子程序并返回圖7所示的步驟422。
如果圖7所示的步驟422確認(rèn)對(duì)所有的騎兵進(jìn)行了處理,則在步驟434將最新位置數(shù)據(jù)傳送到圖像處理單元23,并結(jié)束漫游處理子程序,隨后程序進(jìn)入圖4中的步驟126。
在步驟126,確定是否從輸入裝置3收到使騎兵由漫游狀態(tài)到列隊(duì)狀態(tài)的列隊(duì)命令。如果未收到列隊(duì)命令,則程序返回步驟120。如果收到列隊(duì)命令,則在后續(xù)步驟128,例如,如圖12所示的對(duì)話(huà)就顯示在電視機(jī)監(jiān)視器4上。在下一步驟130,當(dāng)領(lǐng)隊(duì)的取向保持為缺省值或根據(jù)玩家的興趣改變,程序保持后備狀態(tài)直至玩家按下OK按鈕。當(dāng)按下OK按鈕時(shí),在步驟132取出領(lǐng)隊(duì)的取向,并在下一步驟134中使騎兵軍團(tuán)的所有騎兵列隊(duì),隨后結(jié)束騎兵軍團(tuán)移動(dòng)過(guò)程。順便說(shuō)明,除非目標(biāo)點(diǎn)改變,否則將列隊(duì)點(diǎn)設(shè)定為在步驟212取出的目標(biāo)點(diǎn)(由于可以隨時(shí)調(diào)用圖10所示的對(duì)話(huà),因此改變目標(biāo)點(diǎn)是可能的)。
在上述實(shí)施例中,合成加速度是由近距離加速度、中距離加速度和遠(yuǎn)距離加速度累加獲得的,近距離加速度用于當(dāng)各騎兵離其它騎兵太近時(shí)使各騎兵離開(kāi)其它騎兵,中距離加速度用于使其達(dá)到其它位于其周?chē)尿T兵的速度和方向,遠(yuǎn)距離加速度用于改變前進(jìn)的方向以實(shí)現(xiàn)無(wú)障礙觀察。由于騎兵軍團(tuán)的每個(gè)騎兵跟隨具有合成加速度的領(lǐng)隊(duì),所以各騎兵的行為不僅只是看上去象跟著領(lǐng)隊(duì)移動(dòng),各騎兵表現(xiàn)出好象是他/她根據(jù)設(shè)定的他的/她的知覺(jué)角度、知覺(jué)半徑、最大推斥力等數(shù)值由自己判斷如何移動(dòng),同時(shí)詳細(xì)地顯示了騎兵與相應(yīng)的不直接跟隨領(lǐng)隊(duì)并靠近此騎兵的騎兵之間的互易交互。為此,象諸如鳥(niǎo)群、馬群等的一群動(dòng)物一樣,由于位于中部與后部之間的騎兵為了尾隨領(lǐng)隊(duì)并不移動(dòng),但是當(dāng)它們根據(jù)其周?chē)钠渌T兵的移動(dòng)調(diào)整它們相對(duì)于其它騎兵的速度和方向時(shí),它們就移動(dòng)。因此,可以更真實(shí)地顯示騎兵軍團(tuán)的移動(dòng)行為。因此,玩家可以欣賞在虛擬空間顯示的具有現(xiàn)實(shí)感的騎兵軍團(tuán)的移動(dòng)行為。
此外,在本實(shí)施例中,由于漫游參考點(diǎn)是在騎兵達(dá)到目標(biāo)點(diǎn)時(shí)對(duì)每個(gè)騎兵隨機(jī)設(shè)定的。當(dāng)將各騎兵置于漫游狀態(tài)時(shí),他/她在漫游圈之內(nèi)低速漫游。當(dāng)騎兵走出漫游圈時(shí),他/她就返回漫游參考點(diǎn)。因此,可以顯示出類(lèi)似于實(shí)際野馬群的狀態(tài),并且騎兵軍團(tuán)在為每個(gè)騎兵設(shè)置的目標(biāo)點(diǎn)周?chē)敝疗涫盏搅硪粭l命令(列隊(duì)命令)之前,均被置于后備狀態(tài)的情形也能真實(shí)地顯示出來(lái)。
此外,在本實(shí)施例中,當(dāng)出現(xiàn)粘合狀態(tài)時(shí),處于粘合狀態(tài)的騎兵經(jīng)轉(zhuǎn)動(dòng),而無(wú)需后退就可以消除粘合狀態(tài)。因此,可以真實(shí)地顯示出馬不能后退的行為。因此,本實(shí)施例中的各種動(dòng)作幾乎完全可以實(shí)質(zhì)上再現(xiàn)實(shí)際動(dòng)物的動(dòng)作。
順便說(shuō)明,本實(shí)施例能夠使記錄在記錄介質(zhì)1中的游戲程序由介質(zhì)讀取單元22讀出并傳送到RAM,但是,本發(fā)明可以被構(gòu)造成能將游戲程序存儲(chǔ)在ROM中并能被讀出,而無(wú)需具有介質(zhì)讀出單元22。根據(jù)這種構(gòu)造,此游戲裝置將被廣泛應(yīng)用于游戲機(jī)。此外,在本實(shí)施例中,已經(jīng)解釋了使用CD-ROM作為記錄介質(zhì)的實(shí)例。然而,本發(fā)明可應(yīng)用于具有可以裝入CPU組塊RAM中的ROM卡、大容量軟盤(pán)驅(qū)動(dòng)器、磁光盤(pán)等的、并具有介質(zhì)讀出單元以便從中讀出游戲程序的替換結(jié)構(gòu)。
此外,本實(shí)施例的結(jié)構(gòu)可以根據(jù)對(duì)話(huà)完成對(duì)騎兵軍團(tuán)移動(dòng)的初始設(shè)定。根據(jù)本發(fā)明的結(jié)構(gòu)可以自動(dòng)完成初始設(shè)定,例如,通過(guò)使用輸入裝置3移動(dòng)顯示在屏幕上的光標(biāo)并配置列隊(duì)位置,以便啟動(dòng)騎兵軍團(tuán)等的移動(dòng)。此外,所有的初始設(shè)定操作均可以根據(jù)游戲的進(jìn)展情況自動(dòng)完成。
此外,本實(shí)施例構(gòu)成為在固定間隔進(jìn)行的垂直消隱間隔中斷處理期間計(jì)算各騎兵的加速度和位置,但是本發(fā)明可以構(gòu)成為在定時(shí)中斷處理期間或主處理期間完成此項(xiàng)計(jì)算。此外,在本實(shí)施例中,解釋了在求得合成加速度之后,根據(jù)歐拉方法完成對(duì)最新位置的計(jì)算的實(shí)例。然而,本發(fā)明可以構(gòu)成為在對(duì)每次計(jì)算近距離加速度、中距離加速度和遠(yuǎn)距離加速度時(shí)根據(jù)歐拉方法順序地計(jì)算位置。
并且,利用本實(shí)施例的三維坐標(biāo)軸解釋了本發(fā)明,但是它還可以應(yīng)用于二維坐標(biāo)系,只要將z軸的數(shù)值設(shè)置為0就可以了。很明顯,對(duì)于本技術(shù)領(lǐng)域的專(zhuān)業(yè)人員可以設(shè)計(jì)出各種實(shí)施例,它們均屬于所附權(quán)利要求所述的本發(fā)明范圍。
權(quán)利要求
1.一種用于移動(dòng)成群字符的方法,其特征在于它由顯示于三維虛擬空間中的、其中含有一個(gè)領(lǐng)隊(duì)字符的多個(gè)字符形成群,并且這些成群字符向一個(gè)預(yù)定目標(biāo)點(diǎn)移動(dòng);此方法包括當(dāng)另一個(gè)字符存在于某一字符的一個(gè)預(yù)定第一區(qū)域內(nèi)時(shí),計(jì)算用于移動(dòng)該字符離開(kāi)此另一個(gè)字符的第一加速度,并且當(dāng)此另一個(gè)字符存在于該字符的一個(gè)預(yù)定第二區(qū)域內(nèi)時(shí),計(jì)算能使該字符與另一個(gè)正在移動(dòng)的字符的移動(dòng)速度和方向匹配以跟隨領(lǐng)隊(duì)字符的第二加速度;以及根據(jù)在預(yù)定時(shí)間內(nèi)對(duì)所計(jì)算的第一加速度和第二加速度在三維虛擬空間按x、y、z各個(gè)分量求和而得到的合成加速度,計(jì)算該字符在三維虛擬空間中的位置。
2.根據(jù)權(quán)利要求1所述的一種用于移動(dòng)成群字符的方法,其特征在于其中的第一區(qū)域或第二區(qū)域是由預(yù)定垂直角或以字符為中心的預(yù)定半徑確定的球形或圓形,并且第一區(qū)域的垂直角比第二區(qū)域的垂直角大,而前者的半徑小于后者的半徑。
3.根據(jù)權(quán)利要求1所述的一種用于移動(dòng)成群字符的方法,其特征在于進(jìn)一步包括步驟計(jì)算當(dāng)另一個(gè)字符存在于該字符的一個(gè)預(yù)定第三區(qū)域內(nèi)時(shí)用于移動(dòng)該字符離開(kāi)此另一個(gè)字符的第三加速度,其中根據(jù)在預(yù)定時(shí)間內(nèi)由所算得的第一加速度至第三加速度在三維虛擬空間中按x、y、z各個(gè)分量的求和得到的合成加速度,計(jì)算該字符在三維虛擬空間中的位置。
4.根據(jù)權(quán)利要求3所述的一種用于移動(dòng)成群字符的方法,其特征在于其中第一區(qū)域至第三區(qū)域是由預(yù)定垂直角或以該字符為中心的預(yù)定半徑確定的球形或圓形,第一區(qū)域的垂直角大于第二區(qū)域的垂直角并且第二區(qū)域的垂直角大于第三區(qū)域的垂直角,以及第一區(qū)域的半徑小于第二區(qū)域的半徑并且第二區(qū)域的半徑小于第三區(qū)域的半徑。
5.根據(jù)權(quán)利要求3或4所述的一種用于移動(dòng)成群字符的方法,其特征在于其中該字符與另一個(gè)字符之間為近距離時(shí),第一加速度改變以致急劇增加,并且當(dāng)該字符與此另一個(gè)字符之間為近距離時(shí)第三加速度以常速率增加。
6.根據(jù)權(quán)利要求1至5所述的一種用于移動(dòng)成群字符的方法,其特征在于進(jìn)一步包括該字符根據(jù)預(yù)定的信息在預(yù)定的區(qū)域內(nèi)以預(yù)定速度漫游的漫游步驟。
7.根據(jù)權(quán)利要求6所述的一種用于移動(dòng)成群字符的方法,其特征在于其中當(dāng)該字符移動(dòng)到預(yù)定區(qū)域外時(shí),該字符以高于預(yù)定速度的速度向在預(yù)定區(qū)域內(nèi)隨機(jī)設(shè)定的參考點(diǎn)移動(dòng),直到字符回到預(yù)定區(qū)域內(nèi)。
8.根據(jù)權(quán)利要求1至7所述的一種用于移動(dòng)成群字符的方法,其特征在于進(jìn)一步包括粘合狀態(tài)消除步驟,當(dāng)出現(xiàn)一個(gè)字符和另一個(gè)字符粘合以致該字符處于不能活動(dòng)的粘合狀態(tài)時(shí),改變?cè)撟址那斑M(jìn)方向以消除粘合狀態(tài)。
9.一種計(jì)算機(jī)可讀記錄介質(zhì),其特征在于是一種用于記錄權(quán)利要求1至8中任一條所述的移動(dòng)成群字符的方法的計(jì)算機(jī)可讀記錄介質(zhì)。
10.一種游戲裝置,其特征在于通過(guò)操作輸入單元從記錄介質(zhì)中讀出的軟件可以被裝入存儲(chǔ)單元;并且游戲裝置具有一個(gè)以預(yù)定周期調(diào)用的位置計(jì)算單元,用于計(jì)算向預(yù)定目標(biāo)點(diǎn)移動(dòng)的字符群中各字符的位置,該字符群是由包含一個(gè)領(lǐng)隊(duì)的多個(gè)字符組成的;其中,位置計(jì)算單元包括一個(gè)第一加速度計(jì)算器,用于計(jì)算當(dāng)此字符的預(yù)定第一區(qū)域內(nèi)存在另一個(gè)字符時(shí)移動(dòng)該字符離開(kāi)此另一個(gè)字符的第一加速度;一個(gè)第二加速度計(jì)算器,用于計(jì)算當(dāng)此字符的預(yù)定第二區(qū)域內(nèi)存在另一個(gè)字符時(shí)使此字符與另一個(gè)字符的移動(dòng)速度和方向匹配以致緊隨領(lǐng)隊(duì)移動(dòng)的第二加速度;以及一個(gè)位置計(jì)算器,用于根據(jù)由第一加速度和第二加速度在三維虛擬空間中按x、y、z各個(gè)分量求和得到的合成加速度計(jì)算字符在三維虛擬空間中的位置。
11.根據(jù)權(quán)利要求10所述的游戲裝置,其特征在于進(jìn)一步包括一種用于計(jì)算當(dāng)另一個(gè)字符存在于該字符的一個(gè)預(yù)定第三區(qū)域內(nèi)時(shí)用以移動(dòng)字符離開(kāi)此另一個(gè)字符的第三加速度的第三加速度計(jì)算器;其中位置計(jì)算器根據(jù)第一加速度至第三加速度在三維虛擬空間中按x、y、z各個(gè)分量求和得到的合成加速度計(jì)算該字符在三維虛擬空間中的位置。
全文摘要
本發(fā)明提供了一種能真實(shí)表現(xiàn)其互易交互的移動(dòng)成群字符的方法。當(dāng)對(duì):一個(gè)用于當(dāng)另一個(gè)字符存在于某字符的近距離區(qū)域內(nèi)時(shí)移動(dòng)該字符離開(kāi)此另一個(gè)字符的加速度;一個(gè)用于當(dāng)另一個(gè)字符存在于該字符的中距離區(qū)域時(shí)將該字符與另一個(gè)正在移動(dòng)的、以便緊隨領(lǐng)隊(duì)字符的移動(dòng)速度和方向匹配的加速度;以及一個(gè)用于當(dāng)另一個(gè)字符存在于該字符的遠(yuǎn)距離區(qū)域時(shí)移動(dòng)該字符離開(kāi)另一個(gè)字符的加速度,進(jìn)行計(jì)算時(shí)(步驟308至312),并且根據(jù)對(duì)所計(jì)算的加速度在三維虛擬空間按x、y、z各個(gè)分量求和而得到的合成加速度(步驟314、316),計(jì)算該字符在三維虛擬空間中的位置。由于各個(gè)字符能夠隨時(shí)根據(jù)其它字符的運(yùn)動(dòng)而改變其速度和方向進(jìn)行移動(dòng),因此可以更真實(shí)地表現(xiàn)各字符的活動(dòng)動(dòng)作。
文檔編號(hào)G06T13/00GK1285571SQ0012351
公開(kāi)日2001年2月28日 申請(qǐng)日期2000年8月18日 優(yōu)先權(quán)日1999年8月20日
發(fā)明者襟川陽(yáng)一, 津田順平 申請(qǐng)人:株式會(huì)社光榮