根據之前設計好的動作分離版過河遊戲,我們進行乙個簡單的狀態圖ai實現。
狀態圖老師已經給出:
該狀態圖只記錄了遊戲過程中左岸的情況。p代表牧師,d代表魔鬼,b代表船。當船在右岸時不記錄。雙箭頭代表兩個狀態可以相互轉化。
next.boat = nowstatue;
if (next.boat == status.blring ||
next.boat == status.brling ||
next.boat == status.lose ||
next.boat == status.win || boatsize() != 0)
else
else if (next.boat == status.bright &&
leftpriests.count == 2 &&
leftdevils.count == 2)
else if (next.boat == status.bright &&
leftpriests.count == 3 &&
leftdevils.count == 2)
else if (next.boat == status.bright &&
leftpriests.count == 3 &&
leftdevils.count == 1)
else if (next.boat == status.bleft &&
leftpriests.count == 3 &&
leftdevils.count == 2)
else if (next.boat == status.bright &&
leftpriests.count == 3 &&
leftdevils.count == 0)
else if (next.boat == status.bleft &&
leftpriests.count == 3 &&
leftdevils.count == 1)
else if (next.boat == status.bright &&
leftpriests.count == 1 &&
leftdevils.count == 1)
else if (next.boat == status.bleft &&
leftpriests.count == 2 &&
leftdevils.count == 2)
else if (next.boat == status.bright &&
leftpriests.count == 0 &&
leftdevils.count == 2)
else if (next.boat == status.bleft &&
leftpriests.count == 0 &&
leftdevils.count == 3)
else if (next.boat == status.bright &&
leftpriests.count == 0 &&
leftdevils.count == 1)
else if (next.boat == status.bleft &&
leftpriests.count == 2 &&
leftdevils.count == 1)
else if (next.boat == status.bleft &&
leftpriests.count == 0 &&
leftdevils.count == 2)
else if (next.boat == status.bleft &&
leftpriests.count == 1 &&
leftdevils.count == 1)
}
while (queue.count > 0)
return temp;
}queue.dequeue();
if (temp.pos)
}if (temp.ld > 0)
}if (temp.ld > 0 && temp.lp > 0)
}if (temp.lp > 1)
}if (temp.ld > 1)}}
else
}if (temp.rd > 0)
}if (temp.rd > 0 && temp.rp > 0)
}if (temp.rd > 1)
}if (temp.rp > 1)}}
}return null;
}
最後,更新gui,以便正確提示輸出即可
void ongui()
;style.normal.textcolor = new color(0, 0, 0);
buttonstyle = new guistyle("button")
;if (gui.button(new rect (screen.width/2 - 50 , screen.height- 50, 100, 40), "reset", buttonstyle))
if (status == 1)
else if (status == 2)
gui.button(new rect(screen.width/2 - 150 , 30, 400, 40), tips, style);
if (gui.button(new rect(screen.width/2 - 300 , 30, 100, 40), "tips", buttonstyle))
}
最後,我們更新gui,從而能夠正確提示即可
void ongui()
;style.normal.textcolor = new color(0, 0, 0);
buttonstyle = new guistyle("button")
;if (gui.button(new rect (screen.width/2 - 50 , screen.height- 50, 100, 40), "reset", buttonstyle))
if (status == 1)
else if (status == 2)
gui.button(new rect(screen.width/2 - 150 , 30, 400, 40), tips, style);
if (gui.button(new rect(screen.width/2 - 300 , 30, 100, 40), "tips", buttonstyle))
}
unity之小遊戲
歡迎來到我們的狗刨網,我們今天主要做了三個小遊戲,分別是打磚塊,滾動的盒子和 一 首先來看第乙個小遊戲 打磚塊 public gameobject wall void start for int i 0 i 10 i for int j 0 j 10 j instantiate wall,new v...
unity之遊戲特效
運動軌跡常常用於表現 的揮舞效果,在提高速度感的同時又能讓玩家看清楚招式動作,所以是常見的一種格鬥特效。unity中可以直接使用trailrender來實現該效果。運動模糊就是保留前幾幀影像,形成一定的重影模糊效果,從而突出速度感。配合慢鏡頭使用往往能很好地表現運動高潮效果。unity中是通過mot...
Unity賽車遊戲之移動
這個賽車遊戲真是讓我費勁腦汁啊。尤其是寫這種系統化的東西。目前漂移還沒找到更好的演算法,不過基本的移動還是可以做到的。別看就光是個移動,其實也是很費事的。unity給了個對於賽車系統很好的碰撞元件wheelcollider.把這個給四個輪子一套就好了,這個元件能調節一些汽車的相關引數,神馬懸掛系統,...