更新-添加了视频
我所做的事情就像您在许多教程和论坛中都能看到的一样:
No bounce
”的物理材料Dynamic Friction = 0
和Static Friction = 0
Box collider
添加到Material = "No Bounce"
Mass = 1
,Drag = 0
和Angular Drag = 0
现在,我为地面添加了另一个立方体,使其变得很大,并用Box collider
添加了Material = "No Bounce"
我有2个问题:
-当它们碰撞时,立方体会反弹(而我的配置不应该)
-我制作了一个脚本并将其附加到立方体,以更改速度,并在发生碰撞时将其设置为0
:
using UnityEngine;
public class CubeProperties : MonoBehaviour
{
private Rigidbody _rb;
private bool _landing;
private void Start()
{
_rb = GetComponentInParent<Rigidbody>();
}
public void OnCollisionEnter(Collision collision)
{
Debug.Log("Collision");
_landing = true;
}
public void FixedUpdate()
{
if (!_landing) {
return;
}
_rb.velocity = Vector3.zero;
_landing = false;
}
}
因此,在第一次碰撞时,我尝试使用_rb.velocity = Vector3.zero;
立即停止多维数据集。但是改变速度没有效果,我不明白为什么。我已经尝试了很多有价值的方法来看看会发生什么……但是什么都没发生。
我唯一可以添加并起作用的是:AddForce()
我试图设置为负值,但这也不起作用。
我忘记了什么?
这是一个视频,我希望它易于理解(希望我可以帮助您制作视频):
答案 0 :(得分:3)
看起来像将2D物理和3D物理混合在一起。如果是2D场景,您实际上将要使用2D Rigidbody和Box Collider 2D。
如果这是一个看起来像3D场景,那么您只想确保使用的是普通的OnCollisionEnter。就目前而言,在该设置中不会调用OnCollisionEnter2D。
只是为了帮助查看是否被调用,Debug.Log是Unity中的一个很好的技巧。如果它被解雇,它将向控制台发送一条消息。