【3Dゲームエンジン】Unity質問スレッド21 [転載禁止]©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0382名前は開発中のものです。
2015/12/04(金) 18:55:00.77ID:LhrOBBwUunityっていうよりアルゴリズムの話の気はするがな。
壁にぶつかったもの、じゃなくて壁にぶつからなかったもの、だろう。
命令的に使うべきものはRandom.Range(a,b)くらいだ。
例えばだが
前後左右に壁判定をして結果がbool[4] detectとかに格納されている。壁があればtrue
float[4] weightにそれぞれ前・右・左・後の順で重み付けが格納されている
として
float total=0f;
for(int i=0;i<4;i++){
if(detect[i]==false)total+=weight[i];
}
float probability = Random.Range(0,total);
int direct;
for(direct=0;direct<3;direct++){
if(detect[direct]==false)total-=weight[direct];
if(total<0)break;
}
とかやればdirectが0なら前、1なら右〜という結果が残る。
探索距離にもよるが全方面がふさがっていた場合どうすんのかとかそういう問題はあって
ゲームの内容によってはこのままではバグ化することは考えられるが。
■ このスレッドは過去ログ倉庫に格納されています