一種游戲?qū)ο鬅o(wú)序移動(dòng)過(guò)程中的防碰撞的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及游戲?qū)ο笠苿?dòng)領(lǐng)域,特別是涉及一種游戲?qū)ο鬅o(wú)序移動(dòng)過(guò)程中的防碰撞的方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前已經(jīng)熟知的游戲軟件作品中,當(dāng)很多的游戲?qū)ο笠苿?dòng)到同一區(qū)域中時(shí),為了使各自的圖形表示部分不重疊而采取了在發(fā)生碰撞事件之后停止移動(dòng)一段時(shí)間,并以體積、速度、優(yōu)先級(jí)等參數(shù)來(lái)決定誰(shuí)避讓誰(shuí)等待的方法來(lái)解決此問(wèn)題。
[0003]現(xiàn)有技術(shù)的有以下缺點(diǎn):各角色在移動(dòng)過(guò)程中是直到接觸上之后再停止,并沒(méi)有明顯的提前避讓打算以及為此而采取的轉(zhuǎn)向和減速等行為,經(jīng)??吹疆?dāng)兩個(gè)物體前后同向移動(dòng)但因?yàn)楹竺嫖矬w速度較快,而不斷的頂撞前方物體,或者相向移動(dòng)的兩個(gè)物體直到臉撞臉零距離接觸上之后才停止。這些不自然的現(xiàn)象即會(huì)導(dǎo)致移動(dòng)現(xiàn)象混亂和不自然,使得程序多次做亡羊補(bǔ)牢式的尋路來(lái)補(bǔ)救,又會(huì)使游戲軟件使用者的操作變得非常困難和不舒服。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的一個(gè)目的是要提供一種游戲?qū)ο鬅o(wú)序移動(dòng)過(guò)程中的防碰撞的方法及系統(tǒng)。
[0005]特別地,本發(fā)明提供了一種游戲?qū)ο鬅o(wú)序移動(dòng)過(guò)程中的防碰撞的方法,包括:接收步驟,接收指示游戲?qū)ο蟮竭_(dá)終點(diǎn)的移動(dòng)指令,根據(jù)所述移動(dòng)指令設(shè)定游戲?qū)ο蟮陌辽僖粋€(gè)目標(biāo)點(diǎn)的移動(dòng)路線;移動(dòng)步驟,使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng),所述第一預(yù)設(shè)算法為:移動(dòng)距離及方向=方向向量*單位時(shí)間移動(dòng)距離*時(shí)間片*當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù);第一判斷步驟,在所述游戲?qū)ο蟀凑账龅谝活A(yù)設(shè)算法進(jìn)行移動(dòng)的過(guò)程中,當(dāng)滿足第一預(yù)設(shè)條件時(shí),判斷所述游戲?qū)ο笫欠竦竭_(dá)所述移動(dòng)路線中的下一個(gè)目標(biāo)點(diǎn);若到達(dá)所述下一個(gè)目標(biāo)點(diǎn),則判斷所述游戲?qū)ο笫欠竦竭_(dá)終點(diǎn),若到達(dá)所述終點(diǎn),則停止移動(dòng)并等待新的指令,若未到達(dá)所述終點(diǎn),則繼續(xù)執(zhí)行所述移動(dòng)步驟;若未到達(dá)所述下一個(gè)目標(biāo)點(diǎn),則檢測(cè)預(yù)設(shè)范圍內(nèi)的可能碰撞對(duì)象,根據(jù)預(yù)設(shè)算法求出當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù),檢測(cè)所述游戲?qū)ο笤诋?dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)是否大于或等于預(yù)設(shè)的最低系數(shù);若在當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)小于所述最低系數(shù),則根據(jù)第二預(yù)設(shè)算法設(shè)置所述游戲?qū)ο蟮男碌倪\(yùn)動(dòng)方向,執(zhí)行所述移動(dòng)步驟;若在當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)大于或等于所述最低系數(shù),判斷當(dāng)前方向是否與目標(biāo)方向一致,所述目標(biāo)方向指從當(dāng)前位置點(diǎn)指向下一個(gè)目標(biāo)點(diǎn)的方向;若一致,則執(zhí)行所述移動(dòng)步驟;若不一致,則判斷所述游戲?qū)ο笤谒瞿繕?biāo)方向的運(yùn)動(dòng)能量影響系數(shù)是否大于等于所述最低系數(shù);若在目標(biāo)方向的運(yùn)動(dòng)能量影響系數(shù)小于所述最低系數(shù),則執(zhí)行所述移動(dòng)步驟;若在目標(biāo)方向的運(yùn)動(dòng)能量影響系數(shù)大于或等于所述最低系數(shù),則調(diào)整所述游戲?qū)ο蟮挠苿?dòng)方向,使得其轉(zhuǎn)向所述目標(biāo)方向,并執(zhí)行所述移動(dòng)步驟。
[0006]可選地,所述當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)為所述可能碰撞對(duì)象的運(yùn)動(dòng)系數(shù)之中的最小值;每個(gè)所述可能碰撞對(duì)象的運(yùn)動(dòng)系數(shù)為根據(jù)每個(gè)所述可能碰撞對(duì)象與自身的距離,所述可能碰撞對(duì)象與自身方向的夾角,所述可能碰撞對(duì)象的速度及方向求得的一個(gè)處于O和I之間的數(shù)字。
[0007]可選地,所述第二算法包括:第一檢測(cè)步驟,檢測(cè)游戲?qū)ο笤诋?dāng)前方向的運(yùn)動(dòng)能量影響系數(shù);第二檢測(cè)步驟,令N等于1,檢測(cè)游戲?qū)ο笙蜃笮D(zhuǎn)N*A度方向時(shí)得到的新的運(yùn)動(dòng)能量影響系數(shù)NI,檢測(cè)游戲?qū)ο笙蛴倚D(zhuǎn)N*A度方向時(shí)得到的新的運(yùn)動(dòng)能量影響系數(shù)N2 ;第二判斷步驟,判斷NI和N2是否均滿足大于或等于所述最低系數(shù);若均滿足,則使得游戲?qū)ο筠D(zhuǎn)向NI和N2中較大值對(duì)應(yīng)的角度和方向;若并非均滿足,則判斷NI和N2是否均小于所述最低系數(shù);若并非均小于,使得游戲?qū)ο筠D(zhuǎn)向NI和N2中較大值對(duì)應(yīng)的角度和方向;若均小于,判斷N是否等于預(yù)設(shè)次數(shù)閾值M ;若不等于,將第二檢測(cè)步驟中的N替換為N+1并繼續(xù)執(zhí)行第二檢測(cè)步驟;若等于,NI和N2以及當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)中選擇最大值,并使得游戲?qū)ο笃D(zhuǎn)道所述最大值對(duì)應(yīng)的角度和方向,N = I, 2,3…M。
[0008]可選地,所述方法還包括:預(yù)設(shè)步驟,預(yù)設(shè)所述最低系數(shù)的大?。凰龅谝活A(yù)設(shè)條件為:上次的判斷步驟執(zhí)行完畢后的的間隔時(shí)間達(dá)到預(yù)設(shè)時(shí)間閾值。
[0009]可選地,當(dāng)所述游戲?qū)ο笤谶B續(xù)第一時(shí)間閾值內(nèi)的移動(dòng)速度一直大于最大速度閾值時(shí),所述預(yù)設(shè)時(shí)間閾值為第一時(shí)間值;當(dāng)所述游戲?qū)ο笤谶B續(xù)第二時(shí)間閾值(如累計(jì)5s)內(nèi)的移動(dòng)速度一直小于最小速度閾值時(shí),所述預(yù)設(shè)時(shí)間閾值為第二時(shí)間值;所述第二時(shí)間值大于所述第一時(shí)間值。
[0010]本發(fā)明還提供了一種游戲?qū)ο鬅o(wú)序移動(dòng)過(guò)程中的防碰撞的系統(tǒng),包括:接收模塊,接收指示游戲?qū)ο蟮竭_(dá)終點(diǎn)的移動(dòng)指令,根據(jù)所述移動(dòng)指令設(shè)定游戲?qū)ο蟮陌辽僖粋€(gè)目標(biāo)點(diǎn)的移動(dòng)路線;移動(dòng)模塊,使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng),所述第一預(yù)設(shè)算法為:移動(dòng)距離及方向=方向向量*單位時(shí)間移動(dòng)距離*時(shí)間片*當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù);判斷模塊,在所述游戲?qū)ο蟀凑账龅谝活A(yù)設(shè)算法進(jìn)行移動(dòng)的過(guò)程中,當(dāng)滿足第一預(yù)設(shè)條件時(shí),判斷所述游戲?qū)ο笫欠竦竭_(dá)所述移動(dòng)路線中的下一個(gè)目標(biāo)點(diǎn);若到達(dá)所述下一個(gè)目標(biāo)點(diǎn),則判斷所述游戲?qū)ο笫欠竦竭_(dá)終點(diǎn),若到達(dá)所述終點(diǎn),則停止移動(dòng)并等待新的指令,若未到達(dá)所述終點(diǎn),則繼續(xù)使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng);若未到達(dá)所述下一個(gè)目標(biāo)點(diǎn),則檢測(cè)預(yù)設(shè)范圍內(nèi)的可能碰撞對(duì)象,根據(jù)預(yù)設(shè)算法求出當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù),檢測(cè)所述游戲?qū)ο笤诋?dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)是否大于或等于預(yù)設(shè)的最低系數(shù);若在當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)小于所述最低系數(shù),則根據(jù)第二預(yù)設(shè)算法設(shè)置所述游戲?qū)ο蟮男碌倪\(yùn)動(dòng)方向,并繼續(xù)使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng);若在當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)大于或等于所述最低系數(shù),判斷當(dāng)前方向是否與目標(biāo)方向一致,所述目標(biāo)方向指從當(dāng)前位置點(diǎn)指向下一個(gè)目標(biāo)點(diǎn)的方向;若一致,則使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng);若不一致,則判斷所述游戲?qū)ο笤谒瞿繕?biāo)方向的運(yùn)動(dòng)能量影響系數(shù)是否大于等于所述最低系數(shù);若在目標(biāo)方向的運(yùn)動(dòng)能量影響系數(shù)小于所述最低系數(shù),則使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng);若在目標(biāo)方向的運(yùn)動(dòng)能量影響系數(shù)大于或等于所述最低系數(shù),則調(diào)整所述游戲?qū)ο蟮挠苿?dòng)方向,使得其轉(zhuǎn)向所述目標(biāo)方向,并使得所述游戲?qū)ο蟀凑盏谝活A(yù)設(shè)算法向下一個(gè)目標(biāo)點(diǎn)進(jìn)行移動(dòng)。
[0011]可選地,所述當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)為所述可能碰撞對(duì)象的運(yùn)動(dòng)系數(shù)之中的最小值;每個(gè)所述可能碰撞對(duì)象的運(yùn)動(dòng)系數(shù)為根據(jù)每個(gè)所述可能碰撞對(duì)象與自身的距離,所述可能碰撞對(duì)象與自身方向的夾角,所述可能碰撞對(duì)象的速度及方向求得的一個(gè)處于O和I之間的數(shù)字。
[0012]可選地,所述第二預(yù)設(shè)算法為:第一檢測(cè)步驟,檢測(cè)游戲?qū)ο笤诋?dāng)前方向的運(yùn)動(dòng)能量影響系數(shù);第二檢測(cè)步驟,令N等于1,檢測(cè)游戲?qū)ο笙蜃笮D(zhuǎn)N*A度方向時(shí)得到的新的運(yùn)動(dòng)能量影響系數(shù)NI,檢測(cè)游戲?qū)ο笙蛴倚D(zhuǎn)N*A度方向時(shí)得到的新的運(yùn)動(dòng)能量影響系數(shù)N2 ;第二判斷步驟,判斷NI和N2是否均滿足大于或等于所述最低系數(shù);若均滿足,則使得游戲?qū)ο筠D(zhuǎn)向NI和N2中較大值對(duì)應(yīng)的角度和方向;若并非均滿足,則判斷NI和N2是否均小于所述最低系數(shù);若并非均小于,使得游戲?qū)ο筠D(zhuǎn)向NI和N2中較大值對(duì)應(yīng)的角度和方向;若均小于,判斷N是否等于預(yù)設(shè)次數(shù)閾值M ;若不等于,將第二檢測(cè)步驟中的N替換為N+1并繼續(xù)執(zhí)行第二檢測(cè)步驟;若等于,NI和N2以及當(dāng)前方向的運(yùn)動(dòng)能量影響系數(shù)中選擇最大值,并使得游戲?qū)ο笃D(zhuǎn)道所述最大值對(duì)應(yīng)的角度和方向,N = I, 2,3…M。
[0013]可選地,所述系統(tǒng)還包括:預(yù)設(shè)模塊,預(yù)設(shè)所述最低系數(shù)的大小;所述第一預(yù)設(shè)條件為:上次的判斷步驟執(zhí)行完畢后的的間隔時(shí)間達(dá)到預(yù)設(shè)時(shí)間閾值。
[0014]可選地,當(dāng)所述游戲?qū)ο笤谶B續(xù)第一時(shí)間閾值內(nèi)的移動(dòng)速度一直大于最大速度閾值時(shí),所述預(yù)設(shè)時(shí)間閾值為第一時(shí)間值;當(dāng)所述游戲?qū)ο笤谶B續(xù)第二時(shí)間閾值內(nèi)的移動(dòng)速度一直小于最小速度閾值時(shí),所述預(yù)設(shè)時(shí)間閾值為第二時(shí)間值;所述第二時(shí)間值大于所述第一時(shí)間值。
[0015]本發(fā)明的方法由于