一:演示视频
二:代码实现
using UnityEngine;
public class Ball : MonoBehaviour
{
private Rigidbody rigid;
private Vector3 lastDir;
public float speed = 30;
private void Awake()
{
rigid = GetComponent<Rigidbody>();
rigid.velocity = new Vector3(1, 0, 1) * speed;
}
private void LateUpdate()
{
lastDir = rigid.velocity;
}
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Wall")
{
Vector3 reflexAngle = Vector3.Reflect(lastDir, other.contacts[0].normal);
rigid.velocity = reflexAngle.normalized * lastDir.magnitude;
}
}
}