にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング TIPS (9)ぶつかった物体をぶっ飛ばす

上の物体を下の物体にぶつけて、下の物体をぶっ飛ばす
プログラムを考えてみます。

f:id:koharuwest:20190914224458p:plain
上のブロックは下矢印で移動できます。

下のブロックのtagをaitesamaとします。
それぞれrigidをくっつけておきましょう。
それぞれcolliderのTriggerはtrueにしておきましょう。

上の物体に、次のプログラムをアタッチします。

ぶっ飛ばすプログラム

例えばこんな感じです。


public class futtobi : MonoBehaviour
{
    //力
    float chikara=100.0f;

    //力の加わる中心半径
    public float radius = 1.0f;

    //相手のリジッドを格納
    Rigidbody aiteRigid;

    void Start()
    {
        
    }

    void Update()
    {
        //動かすプログラム
        if (Input.GetKey(KeyCode.DownArrow))
        {
            transform.position += new Vector3(0, -0.1f, 0);
        }
    }

    //ぶつかった時トリガをもらう
    void OnTriggerEnter(Collider col)
    {
        //相手のタグが条件に合えば
        if (col.gameObject.tag == "aitesama")
        {

            //相手のrigidをゲットしちゃう
            aiteRigid = col.GetComponent<Rigidbody>();

            //中心位置を格納して
            Vector3 chushin = col.transform.position;

            //コリダーをセット
            Collider[] colliders = Physics.OverlapSphere(chushin, radius);

            //ドッカーン
            aiteRigid.AddExplosionForce(chikara, chushin, 5.0f);
        }
    }

}


ぶっ飛ばしかたによっては、AddForceがよろしいんでしょうが。
それはまたの機会に。

それではよきプログラミングライフを!
またね。