Rigidbody

作者:追风剑情 发布于:2014-4-6 10:01 分类:Unity3d

Rigidbody.png

1. Mass(质量)

一般来说,大部分物体的Mass属性值接近0.1才符合日常生活的感官感受。

2. Drag(平移阻力)

3. Angular Drag(旋转阻力)

4. Use Gravity(使用重力)

5. Is Kinematic(遵循运动学)

如果该属性被置为true,本物体的运动状态将不受外力、碰撞和关节的影响,而只受到动画以及附加在物体上的脚本影响。虽然当该属性被置为true时物体

将不受物理定律的约束,但是该物体还是会影响其他的物体,改变其他物体的运动状态。

6. Interpolate(插值)

在插值模式下物理引擎会在物体的运动帧之间进行插值,使得运动更加自然。但是插值会导致物理模拟和渲染的不同步,进而产生物体轻微抖动现象。建议在开发中,对主要角色使用插值,而其他的则禁用此功能,以达到折中效果。

7. Freeze Rotation(冻结旋转)

8. Collision Detection(碰撞检测模式)

在没有碰撞检测的情况下,碰撞物体会穿过对方,产生所谓的“穿透”现象。

ContinuousDynamic适用于高速运动的物体。

Continuous仅仅可以用于球体胶囊和盒子碰撞者的刚体,而且会严重影响物体的运动表现。

所以大部分的物体采用Discrete作为碰撞检测模式。

示例: 爆炸力

using UnityEngine;
/// <summary>
/// 爆炸测试
/// </summary>
public class ExplosionForce : MonoBehaviour
{
    void Start()
    {
        //3秒后引爆
        Invoke("DoExplosion", 3);
    }

    //引爆
    private void DoExplosion()
    {
        //爆炸范围
        float radius = 5;
        //找到爆炸范围内的所有带Collider的物体
        Collider[] colliders = Physics.OverlapSphere(transform.position, radius);
        foreach(Collider collider in colliders)
        {
            //排除地面,不希望把地面也炸飞
            if (collider.name.Equals("Terrain"))
                continue;
            Rigidbody rigidbody = collider.GetComponent<Rigidbody>();
            //添加爆炸力
            rigidbody.AddExplosionForce(500f, transform.position, radius);
        }
    }
}

标签: Rigidbody

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号