新裝unity渲染問題
陰影
在燈光的inspector中彪蓬,設(shè)置Shadow Type為Soft Shadows,并適當(dāng)調(diào)整參數(shù)
光照烘焙
Windows —— Lightning中剧蹂,設(shè)為Auto
抗鋸齒
Edit —— Project Settings —— Quality中,調(diào)整抗鋸齒等級 Anti Aliasing
碰撞器和觸發(fā)器
API
觸發(fā)信息檢測:
1.MonoBehaviour.OnTriggerEnter(Collider collider) 當(dāng)進(jìn)入觸發(fā)器
2.MonoBehaviour.OnTriggerExit(Collider collider) 當(dāng)退出觸發(fā)器
3.MonoBehaviour.OnTriggerStay(Collider collider) 當(dāng)逗留觸發(fā)器
碰撞信息檢測:
1.MonoBehaviour.OnCollisionEnter(Collision collision) 當(dāng)進(jìn)入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collision) 當(dāng)退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collision) 當(dāng)逗留碰撞器
區(qū)別
碰撞器是觸發(fā)器的載體,而觸發(fā)器只是碰撞器身上的一個屬性
當(dāng)IsTrigger=false時,碰撞器根據(jù)物理引擎引發(fā)碰撞愚屁,產(chǎn)生碰撞的效果
當(dāng)IsTrigger=true時,碰撞器被物理引擎所忽略痕檬,沒有碰撞效果
使用場景
如果既要檢測到物體的接觸,又不想讓碰撞檢測影響物體移動送浊;或要檢測一個物件是否經(jīng)過空間中的某個區(qū)域時梦谜,就可以用到觸發(fā)器
碰撞器:汽車被撞飛、皮球掉在地上又彈起效果
觸發(fā)器:人站在靠近門的位置門自動打開效果
Tips
Roll a ball 中袭景,當(dāng)旋轉(zhuǎn)方塊沒有設(shè)置IsTrigger時唁桩,應(yīng)使用OnCollisionEnter,但當(dāng)碰撞發(fā)生時耸棒,會先處理碰撞(小球撞停)荒澡。當(dāng)設(shè)置了IsTrigger=true時,應(yīng)使用OnTriggerEnter与殃,當(dāng)碰撞發(fā)生時单山,小球不會被處理碰撞,而是順暢通過并拾取
FixedUpdate() 和 Update()
背景和由來
游戲是運(yùn)行在電腦里的世界幅疼,幀是最小時間單位米奸。當(dāng)只有一種update方法時,如果電腦流暢還行爽篷,如果比較卡悴晰,導(dǎo)致幀延后了,那么每幀時間就不固定了逐工,就會造成時間間隔不穩(wěn)定铡溪,這會影響世界的真實模擬
區(qū)別
FixedUpdate():固定時間間隔執(zhí)行
Update():時間間隔不固定,取決于電腦性能泪喊,以及游戲設(shè)置的幀數(shù)棕硫、顯示器刷新率等
使用
FixedUpdate():這里進(jìn)行世界的模擬運(yùn)轉(zhuǎn)、以及對采樣率有要求的操作窘俺,比如給物體施加力饲帅,攝像機(jī)平滑插值移動等
Update():只用于與顯示畫面有關(guān)的操作复凳,比如移動物體到指定位置
UGUI
渲染順序
原則:
1.canvas中的控件,嚴(yán)格按照hierarchy中的順序疊放灶泵,排在下面的育八,疊在最上
2.控件與其他游戲?qū)ο蟮恼趽蹴樞颍瑖?yán)格按照世界坐標(biāo)中赦邻,與相機(jī)的距離來渲染
攝像機(jī)抖動
攝像機(jī)與移動目標(biāo)的相對位置抖動
通常抖動是由于髓棋,攝像機(jī)與被觀察物體的相對位置抖動
應(yīng)當(dāng)檢查攝像機(jī)的位置刷新頻率,是否與被觀察物體的位置刷新頻率保持了同步
疑問
如果在Update中調(diào)用rigidBody.MovePosition惶洲,在Update中移動攝像機(jī)按声,則會抖動;在FixedUpdate中移動攝像機(jī)恬吕,則不會抖動签则。懷疑rigidBody.MovePosition只是用于計算剛體碰撞,具體移動操作铐料,是通過被添加到了事件隊列中的方式渐裂,最終實際在FixedUpdate中pop出來執(zhí)行更新位置的
解疑
在Update中調(diào)用rigidBody.MovePosition,并輸出調(diào)用前后的位置坐標(biāo)
可以看出钠惩,調(diào)用前后柒凉,位置坐標(biāo)并沒有變化
換在FixedUpdate中調(diào)用rigidBody.MovePosition,可看出篓跛,位置坐標(biāo)也沒有發(fā)生變化
結(jié)論
上述截圖表明膝捞,rigidBody.MovePosition函數(shù)中,并沒有直接改變位置坐標(biāo)愧沟,那么事件隊列的猜測蔬咬,至少是合理的,所以沐寺,我認(rèn)為rigidBody.MovePosition函數(shù)應(yīng)該在FixedUpdate中顯示調(diào)用计盒,以便直觀地讓攝像機(jī)與之保持一致
transform.position和RigidBody.MovePosition()
背景和由來
父空物體帶動子物體旋轉(zhuǎn),子物體使用RigidBody.MovePosition()進(jìn)行移動芽丹,最終只有移動生效北启,旋轉(zhuǎn)未生效(父空物體正值旋轉(zhuǎn),子物體負(fù)值旋轉(zhuǎn)拔第,相互抵消)
解決
移動改用transform.position
原因
待續(xù)咕村,目測是RigidBody.MovePosition()基于物理,所以阻止了旋轉(zhuǎn)