こんにちは、カバゴトです!今回は、Unityでピッチャーを作る方法について超初心者向けに解説していきたいと思います!
完成形は下のようになります!
キャラクター準備
まずはキャラクターを準備します。
自分は1からモデルを作れないので、Unity Assets Storeを使ってモデルを準備します。
下の「Basic Motions FREE」を活用しましょう!
Sign inをしていない方は画面右上のアイコンからSign inしましょう。
「Add to my Assets」をクリックします。
すると、上のような画面が出てくるので「Open in Unity」をクリックします。
Unityの画面に上のウィンドウが出てくると思います。上の画像では「Import」と「Re-Download」が表示されていますが、初めて開いた方は「Download」と出てきていると思います。「Download」をクリックして次に「Import」をクリックします。
この画面が出てきたら、「Import」をクリックしましょう!
プロジェクトビューにこのファイルができていれば成功です!
オブジェクト配置
「Game Object」→「3D Object」→「Plane」で台をだします。
プロジェクトビューの「Assets」→「Kevin lglesias」→「Basic Motsions」→「Models」ファイルをクリックするとキャラクターモデルが入っているのでこれを上のヒエラルキービューにドラッグ&ドロップします。
私は、色の違いが分かりやすくなるよう「Assets」→「Create」→「Material」で色を変えています。
「Plane」とキャラクターの位置はこのようにしています。ご参考にどうぞ!
「Game Object」→「3D Object」→「Sphere」をクリックすると、球体がでてくるので、プロジェクトビューにドラッグ&ドロップしてプレハブ化しましょう。(私は名前をballとし、色も付けてます)
ヒエラルキーの「ball」は右クリック→「Delete」で消しておきます。
こんな感じになればOKです!
アニメーション作成
引用元:mixamo
今回もMixamoを活用します!
サインインをしたら、検索ボックスでbaseballと調べましょう。
「Down Load」をクリックして、ダウンロードしましょう。
エクスプローラーを開き、ダウンロードしたアニメーションを下のプロジェクトビューにドラッグ&ドロップします。
先ほど入れたアニメーションをクリックし、右側の「Rig」の「Animation Type」を「Humanoid」にし、右下の「Apply」をクリックします。
「Assets」→「Create」→「Animator Controller」をクリックし、アニメーターを作成します。
作ったら名前を「baseball」にします。
タブの「Animator」をクリックし、下のアニメーションの三角形から、水色の三角形を見つけ、先ほどの「Animator」の画面にドラッグ&ドロップします。
最後にキャラクターをクリックし、下のアニメーターを右側の「Controller」にドラッグ&ドロップします。
スクリプト作成
「Assets」→「Create」→「C#Script」をクリックして、スクリプトを作ります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class throw : MonoBehaviour
{
public GameObject ballPrefab; // ボールのプレハブ
public Transform handTransform; // ピッチャーの右手のTransform
public float throwForce = 20f; // ボールの投げる力
public float delayBeforeThrow = 2f; // アニメーション開始からボールを投げるまでの遅延時間
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
StartCoroutine(ThrowBallAfterDelay());
}
IEnumerator ThrowBallAfterDelay()
{
// 指定された遅延時間を待つ
yield return new WaitForSeconds(delayBeforeThrow);
// ボールを生成
GameObject ball = Instantiate(ballPrefab, handTransform.position, handTransform.rotation);
// ボールに力を加える
Rigidbody rb = ball.GetComponent<Rigidbody>();
if (rb != null)
{
rb.AddForce(handTransform.forward * throwForce, ForceMode.VelocityChange);
}
}
}
このスクリプトはボールとボールを投げる力、ボールを投げるまでの遅延時間を指定し、指定された遅延時間を待った後、ボールの生成、そして、先ほど決めたボールを投げる力をボールに加えるというコードになっています。
先ほど作ったスクリプトにコピー&ペーストしましょう!
先ほど作ったスクリプトを左側のモデルにドラッグ&ドロップし、右側の「Hand Transform」と「Ball Prefab」を白い丸から選んでそれぞれ、「B-hand.R(Transform)」と「ball」(先ほどプレハブ化した球体の名前)を選択します。
「Throw Force」と「Delay Before Throw」の大きさは何でもいいですが、後者は2でしっくりきました。(前者を2000にしてますがこれは早すぎです..)
実際に動かしてみる!
動きました!ちなみに「Throw Force」と「Delay Before Throw」の大きさは20、2にしています!」
終わりに
最後まで読んでくださりありがとうございます!今回はUnityでピッチャーを作る方法を解説しました。もし、うまくいない場合や意見等あればコメントの方をよろしくお願いします!
この記事が参考になれば幸いです。また、次回のブログでお会いしましょう!
コメント
コメント一覧 (2件)
はじめまして、コメント失礼します。
ピッチングのアニメーションがわからず困っていたところ、こちらの記事を見つけ参考にさせていただいております。
C#のスクリプトはどこにありますでしょうか?
すみません、貼り忘れていました!
修正しましたので、ご確認ください。