unity 初探 ---- 移動(dòng)與物理
今天來(lái)玩玩 unity, 隨便在B站找個(gè)教材看看
里面告訴我unity 內(nèi)建一個(gè) 角色控制器 來(lái)讓開(kāi)發(fā)者控制你的角色
看上去很好玩,大概看了一下 有不錯(cuò)的內(nèi)容 比如設(shè)置上爬角度,上爬高度 都是對(duì)虛擬世界的一個(gè)很好玩的設(shè)計(jì)。 但是弄完移動(dòng)代碼后,我發(fā)現(xiàn)了嚴(yán)重的問(wèn)題
這個(gè)?角色控制器 跟 物理系統(tǒng)是一個(gè)很混亂的關(guān)系。 它是有碰撞檢測(cè)的,也就是你可以爬樓梯,但又沒(méi)有物理系統(tǒng),當(dāng)你什么都不做的時(shí)候 你可以讓自己浮在空中(絕對(duì)靜止)。當(dāng)你想把物理系統(tǒng)中的重力融合進(jìn)來(lái)的時(shí)候,你就會(huì)發(fā)現(xiàn)你的角色開(kāi)始鬼畜了。
這是因?yàn)樗鼈兙褪莾商紫到y(tǒng),基本是獨(dú)立的,但又同時(shí)影響你的游戲世界里面的唯一的坐標(biāo)系統(tǒng)。這里有兩個(gè)搞笑的現(xiàn)象。
一 物理系統(tǒng)認(rèn)為不存在絕對(duì)的靜止(因?yàn)闀?huì)持續(xù)受重力影響),但是角色控制系統(tǒng)認(rèn)為是有的,于是在互相干擾下,你的角色會(huì)微微的抽風(fēng),就是抖來(lái)抖去,呵呵
二 兩個(gè)系統(tǒng)使用同一坐標(biāo),但又使用不同的緩存,比如重力認(rèn)為你在掉落,不停地更新你的坐標(biāo),但是角色認(rèn)為你是可以浮空的,于是 即便你已經(jīng)被重力拉到地面,但當(dāng)你下一次移動(dòng)時(shí),角色控制器會(huì)從緩存中的坐標(biāo)(半空中)來(lái)開(kāi)始你的移動(dòng),于是你的角色會(huì)出現(xiàn)瞬移現(xiàn)象。
我不確定 unity 是否有成熟方案,畢竟我才看了一小會(huì)。不過(guò) B站一般都教你角色控制器,但unity官方文檔里面關(guān)于角色移動(dòng),是直接叫你向角色施加一個(gè)力,這個(gè)方法是完美迎合物理系統(tǒng)的。當(dāng)然,你這樣做,會(huì)導(dǎo)致你在開(kāi)發(fā)過(guò)程一直要考慮物理系統(tǒng)。。。
想一想,一般3D游戲 你的角色都是有物理系統(tǒng)的,比如摔死什么的。。。對(duì)吧
那角色控制器有雞肋的感覺(jué)了。。。好。。。
今天就這樣了。。。