国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity學(xué)習(xí)筆記06物理系統(tǒng)

2021-11-30 08:13 作者:挽秋_z  | 我要投稿

物理引擎基礎(chǔ)

主要功能

各種力的支持:比如重力,摩擦力,動(dòng)力,浮力等。

基本的物理體:簡(jiǎn)單的幾何形體,比如長(zhǎng)方體,球,平面等。三維網(wǎng)格模型,可以使用簡(jiǎn)單的幾何體作為包圍體來(lái)

代替模型。

物體間的碰撞檢測(cè):可以使用包圍體的簡(jiǎn)單計(jì)算方式,也可以采用三維網(wǎng)格的精確碰撞(但對(duì)計(jì)算量消耗較大)。

CCD(連續(xù)碰撞檢測(cè))可以提供跟高精度的碰撞響應(yīng)。

碰撞反應(yīng):物理引擎能夠根據(jù)碰撞發(fā)送的具體情況,按照物理規(guī)律計(jì)算物體的碰撞反應(yīng)。

粒子系統(tǒng):粒子系統(tǒng)的計(jì)算過(guò)程就是物理仿真的過(guò)程。

其他功能:如使用剛體以及剛體鏈接關(guān)系實(shí)現(xiàn)布娃娃系統(tǒng)(Rag Doll)。布料,可變性物體以及可破壞物體等。

簡(jiǎn)單操作

Rigidbody

剛體,其中的Constraints:如果勾選其中的對(duì)應(yīng)方向,則物體將在該方向上被鎖定。Use gravity:是否使用重力。

有專(zhuān)門(mén)的物理材質(zhì)(Physic ?Material):其中的Bounciness代表的是彈性。

Plane自帶有Mesh Collider碰撞體。

Constant Force:一個(gè)恒力

典型物理效果模擬

四元數(shù)Quaternion

使用四元數(shù)(使用歐拉角會(huì)帶來(lái)萬(wàn)向節(jié)死鎖問(wèn)題)表示旋轉(zhuǎn)的一個(gè)最大好處就是可以實(shí)現(xiàn)SLERP插值(spherical

linear interpolation,球面線性插值)。

SLERP插值的原理

普通線性插值的計(jì)算方法

1.計(jì)算兩個(gè)值的差:△a=a1-a0;

2.取得差的一部分:t△a;

3.在初始值上加上2中的結(jié)果:lerp(a0,a1,t)=a0+t△a。

四元數(shù)中的插值

1.△a=a1/a0;

2.(△a)t ? ? 這里是t次方;

3.slerp(a0,a1,t)=a0(△a)t。

四元數(shù)在游戲中的應(yīng)用

用來(lái)替代歐拉角來(lái)參與旋轉(zhuǎn)計(jì)算,和歐拉角之間可以互相轉(zhuǎn)換。(游戲中表示旋轉(zhuǎn),一般還是以歐拉角為主),即

四元數(shù)僅僅參與中間的計(jì)算。

應(yīng)用

實(shí)現(xiàn)一個(gè)簡(jiǎn)單的子彈發(fā)射效果,在場(chǎng)景中制作好一個(gè)預(yù)制件,將下面的腳本賦給攝像機(jī),然后將預(yù)制件拖拽給腳本

開(kāi)放出來(lái)的參數(shù)。

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

public class BallFire : MonoBehaviour
{
? ?public GameObject bullet;
? ?static float pressTime = 0f;
? ?// Start is called before the first frame update
? ?void Start()
? ?{
? ? ? ?
? ?}

? ?// Update is called once per frame
? ?void Update()
? ?{
? ? ? ?if(Input.GetButton("Fire1"))
? ? ? ?{
? ? ? ? ? ?pressTime += Time.deltaTime;
? ? ? ?}
? ? ? ?if(Input.GetButtonUp("Fire1"))
? ? ? ?{
? ? ? ? ? ?Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
? ? ? ? ? ?GameObject b = Instantiate(bullet, ray.origin, Quaternion.LookRotation(ray.direction)) as GameObject;
? ? ? ? ? ?var cf = b.GetComponent<ConstantForce>().relativeForce = new Vector3(0, 0,pressTime * 10);
? ? ? ? ? ?pressTime = 0;
? ? ? ?}
? ?}
}

鏈接結(jié)構(gòu)(Joint)

用來(lái)模擬現(xiàn)實(shí)世界中的關(guān)節(jié)結(jié)構(gòu)(joint是一個(gè)寬泛的概念,泛指用來(lái)連接不同物體的一種結(jié)構(gòu))

Joint是“約束”的一種(約束相關(guān)物體的運(yùn)動(dòng))

常見(jiàn)類(lèi)型

Character Joint :常用來(lái)表示人體的一些骨骼鏈接

Hinge Joint:門(mén)扇類(lèi)型

Fixed Joint:相關(guān)的物理體無(wú)法發(fā)發(fā)生相對(duì)運(yùn)動(dòng),是固定的結(jié)構(gòu)

Spring Joint:彈簧類(lèi)型

Configurable Joint :一般類(lèi)型,可配置類(lèi)型,開(kāi)發(fā)人員可以根據(jù)需要來(lái)約束Joint的自由度,可以用在布娃娃系統(tǒng)

(Ragdoll)中。

可破壞鏈接

當(dāng)力或者力矩達(dá)到閾值的話,鏈接關(guān)系破壞??梢詫?shí)現(xiàn)一些游戲功能(當(dāng)破壞發(fā)生時(shí),使用觸發(fā)函數(shù))

Anchor表示物體的旋轉(zhuǎn)軸。

Rigidbody中的Is Kinematic如果勾選上表示該物體是運(yùn)動(dòng)學(xué)物體,不受力的影響(一般是空物體勾選)。

簡(jiǎn)單操作

新建一個(gè)空物體,為其添加約束類(lèi)型的組件。新建一個(gè)盒子,將其拖拽給空物體的約束組件的Connected Body

(一般要為盒子添加剛體組件之后才可以添加)。

Joint屬性面板中的Break Force和Break Torque表示外部受到的力大到一定程度的時(shí)候,鏈接會(huì)被破壞。(使用上

節(jié)的簡(jiǎn)單子彈效果進(jìn)行實(shí)踐,當(dāng)子彈打到這些物體時(shí),鏈接會(huì)被破壞)

碰撞事件

碰撞檢測(cè))作用:游戲很多機(jī)制依賴(lài)于碰撞事件(傷害判定,觸發(fā)對(duì)話,人工智能,特效等)

碰撞體

基礎(chǔ)碰撞體:規(guī)整的幾何體,比如球,長(zhǎng)方體,圓柱,膠囊等。可以通過(guò)基礎(chǔ)碰撞體組合出較精確的復(fù)合碰撞體。

網(wǎng)格碰撞體

靜態(tài)碰撞體(應(yīng)用于場(chǎng)景物體,不發(fā)生移動(dòng),利于做優(yōu)化,碰撞信息可以提前預(yù)計(jì)算)

碰撞類(lèi)型

1、碰撞體碰撞:碰撞物體空間不能沖突(就比如兩個(gè)拳頭碰撞)

2、觸發(fā)器碰撞:碰撞物體空間可沖突(就比如浮力)

碰撞產(chǎn)生的條件

兩個(gè)物體必須都有碰撞器,且至少其中一個(gè)有剛體組件

碰撞響應(yīng)消息

碰撞檢測(cè)消息:參與碰撞的物體,需要滿足什么條件時(shí),才能進(jìn)行碰撞檢測(cè)

觸發(fā)器響應(yīng)消息

觸發(fā)器消息:


實(shí)踐

每個(gè)物體都有一個(gè)Collider,表示這個(gè)物體可以發(fā)生碰撞,點(diǎn)擊edit collider可以調(diào)整碰撞體的大小。


浮力效果

實(shí)現(xiàn)原理

1.通過(guò)觸發(fā)器碰撞實(shí)現(xiàn)。

2.物體處于另外一個(gè)物體內(nèi)的時(shí)候,有響應(yīng)事件。

3.按照浮力公式對(duì)進(jìn)入力場(chǎng)的物體施加力。













Unity學(xué)習(xí)筆記06物理系統(tǒng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南部县| 称多县| 曲水县| 新沂市| 交口县| 黄大仙区| 太和县| 阳新县| 明溪县| 商城县| 宜州市| 蓬溪县| 岳池县| 新丰县| 西平县| 瑞安市| 鄂托克旗| 涞源县| 抚宁县| 连山| 江孜县| 蒲江县| 开封市| 土默特左旗| 凤阳县| 习水县| 峡江县| 石景山区| 夹江县| 疏附县| 英山县| 汾阳市| 郴州市| 定兴县| 鹿邑县| 儋州市| 五台县| 隆安县| 沙河市| 滁州市| 彭州市|