antique-appです。
ようやっとUnityで次のアプリを作り始めたのですが、基本的なことでつまずき、丸1日ほどかかって解決しました。(注:超初歩的な内容です!)
Contents
やりたかったこと
オブジェクトをシャッフルする動きを作りたかったんです。
横一列に並んだオブジェクトが3つくらいあって、各々の移動先がランダムに決まって(2つしか移動しない場合もあり)、かつ移動先が重複しない、みたいな。
完成形としては、こんな感じです。
やっとやりたかった動きができた
見切れてるけど気にしないでね pic.twitter.com/w4ACSKTcjs— antique-app (@antique04395355) 2019年5月25日
つまずいたこと
調べたところ、オブジェクトを一定速度で移動させるときにはVector3.MoveTowardsという関数を使えばいいことがわかったので、Update( )内のVector3.MoveTowardsに現在地・目的地・移動速度を入れて使ってみたところ、「1回目の移動は」バッチリできました。
がっ、問題はその次の移動です。
続けて2回目の移動のスクリプトをUpdate( )内に書いてみたところ、オブジェクトがガクガクするだけで目的地まで動かない!
(レモンがガクガクする様はシュールでした)
原因と解決方法
それでしばらく悩んでいたのですが、1回目の移動をUpdate( )内に書いているため、1回目の移動が終わってないうちから2回目の移動が始まってることに気がつきました。
というわけで、以下のように1回目の移動が終わってから2回目の移動が始まるようにしてあげてなんやかんやすると、シャッフルの動きをつくることができました。
//1回目の移動
if (moving == 0)
{
//Vector3.MoveTowardsを使用して移動するメソッド
Lemon1moving();
//現在地が目的地と一致したら次の移動へ
if (lemon1.transform.position == lemon1target)
{
moving = 1;
}
}
//2回目の移動
if (moving == 1)
{
Lemon1moving();
}
Update( )がなんたるかを理解していない、私のような初心者にはありがちなミスですね!
とりあえずシャッフルの動きはできるようになりましたが、まだまだやることはたくさんあるので、6月中のリリース目指してマッタリやっていきます〜〜
それでは。