淘先锋技术网

首页 1 2 3 4 5 6 7

(一)定义

刚体:用来模拟 GameObject 对象在现实世界中的物理特性,包括重力,阻力,质量,速度等;

(二)组件参数介绍

参数含义功能
Mass物体的质量(1)位为Kg
Drag平移阻力

(1)用来表示物体因受阻力而速度衰减的状态

(2)0表示没有阻力,infinity表示立即停止移动

Angular Drag旋转阻力(1)用于模拟物体因旋转而受到的各方面的影响
Use Gravity是否使用重力

(1)表示物体是否受到重力影响,false时用来模拟失重现象

(2)只有在Is Kinematic 为 false 的时候才会有效果

Is Kinematic否接受动力学模拟

(1)表示对象是否遵循牛顿运动学物理定理

(2)为true表示该物体运动状态不受外力,碰撞和关节的影响,而只受到动画以及附加在物体上的脚本影响

Interpolate插值类型

在物体的运动帧之间进行插值,使得运动更加自然

(1)None:无插值

(2)Interpolate:差值(根据上一桢的位置来做平滑移动)

(3)Extrapolate:推算(根据预测的下一桢的位置来做平滑移动)

Collision Detection碰撞检测模式

无论哪种检测模式,都有可能被穿越

(1)Discrete:不连续模式;

(在某一帧两物体的碰撞器发生重叠时才能被检测到,可能发生穿越现象)

(2)Continuous:连续模式;

(一般用在目标碰撞体上,防止快速移动的物体通过该物体而不检测碰撞)

(3)ContinuousDynamic:动态连续模式;

(一般用在两个高速运动的物体上,防止互相穿越)

Constraints刚体约束

(1)Freeze Rotation:冻结旋转;

(2)Freeze Position:冻结位移;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(三)常用方法

AddForce():给物体施加一个瞬时力,使物体在该力的作用下产生一个初速度,接着物体在初速度的作用下开始运动;

MovePosition():使物体按照参数移动至指定位置,常用于FixedUpdate方法中;

MoveRotation():使物体按照参数旋转到某个方位;

Sleep():使刚体处于休眠状态;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerCtrl : MonoBehaviour
{
    public Rigidbody playerRb;//声明刚体对象
    public float speed = 0.5f;

    void Start()
    {
        playerRb = GetComponent<Rigidbody>();// 获取对象Rigidbody属性
    }

    void Update()
    {
        playerRb.AddForce(transfrom.forward * speed);//给物体添加一个向前的初速度
    }

    void FixedUpdate()
    {
        playerRb.MovePosition(new Vector3(10,100,200));
    }
}

(四)刚体碰撞Collision

降低穿越现象的方法有:

1、适当增加两物体碰撞器的厚度;

2、减量降低两物体碰撞时的相对速度;

碰撞产生的条件:

(1)必须双方都要有碰撞器,因为发生碰撞的是碰撞器;

(2)运动方一定要有刚体组件,另一方有没有均可;