gpt4 book ai didi

c# - Unity如何 "power bounce"一个对象相对于另一个对象的角度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:04 26 4
gpt4 key购买 nike

我正在开发一个简单的 3D 游戏,其中一些球(固定 Z 位置)沿着一条路径(使用重力和物理 Material )落到一个小的平坦平台上,并从该平台上“反弹”。玩家可以旋转这个平台,所以我想根据平台的角度重新创建一个逼真的弹跳方向。

我是编码新手,但到目前为止,我已经弄清楚球与平台碰撞时的矢量与平台法线之间的关系,它应该是与表面的垂直线,并且可以是用于将球的矢量反射到另一个方向。

我已经使用 OnCollisionEnter 和 if 语句来检测它是否是您正在碰撞的平台,但我不明白在哪里指示表面的法线以及如何访问它。应该作为其他对象中的公共(public)类还是可以从球类游戏对象中检测到?

我尝试了这个网站和其他网站上的一些示例并得到了这样的结果:

public class OnCollision : MonoBehaviour
{

public float speed = 25f;
public Rigidbody rb;
private Rigidbody rigid;

private void Start()
{
rigid = transform.GetComponent<Rigidbody>();
}
private void OnCollisionEnter(Collision collision)
{
if (collision.transform.tag == "BouncePad") {
rb.velocity = transform.up * speed;
}

}
}

现在它垂直反弹,所以我猜我应该更改 transform.up * speed 部分所在的代码。

谁能指导我,好吗?

非常感谢。

最佳答案

如果您已经在使用 Physics material ,查看 Bounciness 属性。值为 0 意味着没有反弹,值为 1 将导致没有能量损失。将为您计算反弹的角度。确保将物理 Material 拖到每个对象上——球和墙的 Material 都会产生效果。

关于c# - Unity如何 "power bounce"一个对象相对于另一个对象的角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com