LoginSignup
6
3

More than 3 years have passed since last update.

Unityの野球ゲームで簡単に変化球を実装する

Last updated at Posted at 2021-02-13

Unityの野球ゲームで、投手に変化球を投げさせたい場合の簡易的な方法を書きました。

あくまで簡易的なので若干リアルさには欠けるかもしれません。

手順

PlaneとSphereを用意します。
Sphereとカメラの距離はある程度空けておきます。
653885a600eab7c7c73992f394624da7.png

ボールをど真ん中に投げてみる

まずはボールを真ん中に投げてみます。
SphereにRigidBodyコンポーネントを追加し、スクリプトは以下の通りで試してみます。
powerは1000ぐらい。

Ball.cs
public class BallTest : MonoBehaviour
{
    public Rigidbody _rb;
    public int power;
    Vector3 direction = Vector3.back;//カメラの方向に投げてみる

    void Start()
    {
        _rb.AddForce(direction * power);
    }
}

Image from Gyazo
powerは丁度いいですが、球が転がってしまったので力を与える方向(direction)を修正します。

    Vector3 direction = new Vector3(0,0.2f,-1.0f);

Image from Gyazo
これをど真ん中のストレートとします。

球に変化を与える

飛ばした球がColliderに当たった際に変化方向に力を加えるという方法でいきます。
以下のように空のオブジェクトを作成しBoxColliderを追加。ボールの軌道の被るように配置します。
isTrrigerはONにします。
Image from Gyazo

最初はスライダーをかけてみます。
Sphereオブジェクトのtagは"Ball"に変更しておきます。

ChangeCollider.cs

    int changePower = 100; //変化させる力
    Vector3 sliderDirection = new Vector3(1.0f, -1.0f, 0); //変化の方向

    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ball")
        {
            Rigidbody ball_rb = other.gameObject.GetComponent<Rigidbody>();
            ball_rb.AddForce(sliderDirection * changePower);//ボールに力を加える
        }
    }


Image from Gyazo
なかなかいい感じですね。

Colliderの位置を前後させることで曲がり始めのタイミングをずらせます。
Z軸に力を加えるとブレーキをかけることもできます。

様々な変化をさせてみた

せっかくなので投手を準備して色々な変化球を試してみました。
directionをいじれば様々な変化球を実現できます。
ezgif.com-gif-maker.gif

投手のアセットはこちらを使用しました。

1d589c9b7008af5afc597af6df96509e.png

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3