Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0今回はUnityのVector3.SmoothDamp、Mathf.SmoothDamp、Mathf.SmoothDampAngle、Mathf.SmoothStepを使用しゲームオブジェクトの移動や回転、色の変更等を滑らかにしてみようと思います。わたくしの記事で滑らかな遷移をさせるにはVector3.LerpやVector3.Slerp等を使っていました。Unityでキャラクターのなめらかな移動・回転のやり方を検証するUnityでキャラクターのなめらかな移動・回転をする方法を検証してみます。キャラクターがスタート地点から目的地までキッカリ動いて止まるのではなく最初と最後はゆっくり動くようにしたい場合は補間を使います。補間のやり方を変更し動きを確認してみます。18:56↑の記事でどんな動きになるか実験しています。今回は別のやり方で徐々に値を変化させていきます。スポンサーリンク徐々に値を変化させる今回使用するメソッドを一つ一つ見ていきましょう。Vector3.SmoothDampVector3.SmoothDampはVector3型の値を徐々に変化させていきます。現在地から目的地に徐々に移動させたい場合に使います。最高速度);第1引数がVector3の現在の位置、第2引数がVector3の目的の位置、第3引数がVector3の現在の速度、第4引数が目的地までの遷移時間、第5引数が移動の最高スピードになります。第5引数は指定しなくても大丈夫です。戻り値としてVector3の値が返ってくるのでこれを現在地に再度代入する事で少しづつ移動させる事が出来ます。第3引数のrefは参照渡しで使用するもので、現在の速度は実行する度に変更されここで指定した変数に代入されます。ここら辺はとりあえずrefというキーワードを書く必要があるという認識だけで詳しくはC#のリファレンスを確認してください。Mathf.SmoothDampMathf.SmoothDampはVector3.SmoothDampのfloat型の値を得られるバージョンです。ある値を目的の値に徐々に変更していきます。最高速度);第1引数はfloat型の現在の値、第2引数がfloat型の目的の値、第3引数はfloat型の現在の速度、第4引数が遷移時間、第5引数が移動の最高スピードになります。Mathf.SmoothDampAngleMathf.SmoothDampAngleは1つの角度を徐々に変更させる為のメソッドです。最高速度);引数はfloat型でこれまで紹介したメソッドと同じです。Mathf.SmoothStepMathf.SmoothStepは補間をします。割合)第1引数がfloat型の現在の値、第2引数がfloat型の目的の値、第3引数では割合を指定します。割合が0なら現在の値、1以上なら目的の値を返し、0.5なら半分の値を返します。徐々に値を変化させるサンプルの作成スムーズに値を変化させるメソッドを見てきたので、それらを使ったサンプルを作成してみます。今回作成するサンプルはカメラの移動と回転、カメラに映る背景色の変化をさせてみます。GameObject→Cubeを選択し名前をTargetとし、このゲームオブジェクトの位置と角度にカメラを遷移させます。その為、作成したTargetのTransformを変更してください。Targetの位置や角度は↑のように設定しました。↑がカメラとTargetの位置関係です。カメラがTargetの位置と角度に遷移していくスクリプトを作成します。1f);}}カメラの位置の移動は2つのバージョンを作成しました。一つ目はVector3.SmoothDampを使ってターゲットのゲームオブジェクトの位置に徐々に移動させています。二つ目はMathf.SmoothStepを使ってX、Y、Zの値をそれぞれ計算し、カメラの位置を徐々に移動させています。サンプルを実行する時はどちらかをコメント化して実行してください。SmoothStepの第3引数には経過時間を間隔で割った値を指定します。SmoothDampは徐々に値を変化させますが、SmoothStepは最初と最後がゆっくりになります。Mathf.SmoothDampAngleを使ってカメラの角度をTargetの角度へと徐々に変化させています。Mathf.SmoothDampを使ってカメラの背景色のR、G、Bの値を徐々に目的の値に変化させています。Cameraに設定しパラメータを変更します。Colorの色ではR、G、Bに255、Alphaに0を設定します。Colorに変更しカメラに映る背景を通常の色にします。これで設定が出来たので実行してみましょう。↑のようになりました。今回は位置の移動でSmoothStepを使用しました。JavaScriptで使用する場合C#の場合はrefというキーワードが必要ですが、JavaScriptの場合は付けずに使用します。1f);}SerializeFieldアトリビュートは[]ではなく最初に@を付け、refキーワードの部分を削除すればC#と同じように動作します。終わりにSmoothDamp等はrefキーワードを入れる必要があったので全然使っていなかったんですが、現在の速度も取得する事が出来るので用途によってはこちらの方が使い勝手がいいのかもしれません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。