「オブジェクトの往復移動」オブジェクトの動き
ゲームを作っていると、画面の動きの少ない状態になってしまいます。今回は打開策の一環で、オブジェクトを動かして、見た目を改善させようと思います。
今回は、以下のプログラムを使用しています。
現状の画面
制作中の画面の一部です。ビックリマークを動かしていきます。
前述通り画面が止まっていますね、エフェクトも動きもない、そんな状態です。
動かしてみる
とりあえず回転と上下に往復させ、動きを付けます。
地味ではありますが、上下運動と、回転を加えるだけで、かなり見栄えが変わると思います。これで「フリーズした!」と思われなくなったと思います。(多少は)
インスペクターの設定はこんな感じです。基本的な使い方は「unity」transformを利用したオブジェクトアニメーションをご確認ください。

おまけ:親オブジェクトを使い複数の動きを使い分ける
ビックリマークに親オブジェクトを付け、触れた瞬間に、上昇と回転速度を上げる設定をすることで、複数のアニメーションを実装します。
会話イベントが始まるので見づらいですが、触れた瞬間、ビックリマークが少し上昇し、回転が強くなっています。あと、ちょっとだけ左右に揺れます。
親と子のアニメーションプログラムの切り替えで、実装できます。以下のスクリプトは、あくまで例となっています、ご承知ください。
[SerializeField] private AnimationObject eStartAnima;
[SerializeField] private AnimationObject updateAnima;
private bool isStart = false;
private void Update()
{
//終了待ち
if (!eStartAnima.ActUpdata() && isStart)
{
//アニメーション変更
eStartAnima.ForcedTermination();//アニメーション停止
updateAnima.enabled = true;//動くようフラグ変更
updateAnima.Play(true);//通常アニメーション再生
isStart = false;
}
}
/// <summary>
/// 開始アニメーションをする
/// </summary>
public void StoryStart()
{
//イベント開始アニメーションに変更
updateAnima.ForcedTermination();//通常アニメーション停止
updateAnima.enabled = false;//動かないようフラグ変更
eStartAnima.Play(true);//開始アニメーションを再生
isStart = true;
}
オブジェクトを動かすだけでも、ゲームらしさを上げることができたと思います。ここから、切り替えタイミングで音を出したり、エフェクトを出すとさらにそれっぽくなると思います。