ボールを跳ね返すブロックの作り方を紹介します。
完成動作

作り方は以下から。
床を斜めに作成
1.Cubeを使って斜めに床を作成(わかりやすいように赤色を付けてます。)

跳ね返されるボールを作成
1.Sphereを作成して、傾きのてっぺんに置く。

2.Sphereに”Rigidbody”を付ける。

当たった相手を跳ね返すGameObjectを作成
1.例としてCubeを設置します。名前はBounceにします。
2.SphereがBounceに当たるように場所を調整する。

当たったら跳ね返るスクリプトを作成
1.Bounce.csという名前のスクリプトを作成して、以下のコードを記載する。
using UnityEngine;
public class Bounce : MonoBehaviour
{
/// <summary>
/// 跳ね返す強さの変数
/// </summary>
[SerializeField]
private float bounce = 10f;
/// <summary>
/// 衝突した時
/// </summary>
/// <param name="collision"></param>
private void OnCollisionEnter(Collision collision)
{
// 当たった相手のRigidbodyのx軸方向に力を加える。
// 今回はx軸のマイナス方向に力を加えて跳ね返す。
collision.rigidbody.AddForce(-bounce, 0f, 0f, ForceMode.Impulse);
}
}
スクリプトを跳ね返すGameObjectにアタッチ
1.Bounce.csを跳ね返すGameObject(Bounceオブジェクト)にアタッチする。

※跳ね返す強さは以下のBounceの値の”10″を変更する。

完成
これでSphereオブジェクトがBounceオブジェクトにぶつかると跳ね返ります。
コメント