Unity之升高人物视野
在做漫游的時候,如果你是使用的第一人稱,看比你視野高或者低的物體時,你需要看清物體貼圖的細節,比如說你要看清上面寫的小字是什么,仰視或者俯視,由于距離的限制很難能夠到達清晰的效果,如果平視就需要改變視野的高度,在這里就簡單探討一下如何來改變第一人稱視野的高度問題。
在Unity里第一人物呈現在場景里就是這么一個綠柱,綠色部分代表人物高度,默認值是2,高度增加綠柱隨之增長。綠柱中間部分灰色的膠囊體為攝像機所在位置,默認位置為中間位置,既center.y=0,他放射出的錐形白色細線就為人物視野范圍。調整人物視野高度實際就是調節攝像機在Y軸的高度。
攝像機高度在第一人稱的場景中是由人物高度height和攝像機相對人物高度的位移center.y的值來決定的。
因為重力原因,在運行場景時,人物高度呈現的綠色柱體是落地的,人物中transform.poition.y的y軸坐標只代表人物的初始位置,與運行后人物落地的坐標值是不一致的,所以在程序中單純更改坐標y軸的值是改變不了任務視野高度的。另外,如果在運行場景中人物的y軸的坐標值不變的情況下,光更改人物高度height的值,有可能會捅破天,達到場景的上限值尤其是在一個房間里的場景表現的特為明顯,單純更改center.y的值有可能會直接捅破地,超出地面的下限值,這兩種情況都可能導致人物掉出場景。要想更改視野高度只能幾個值同時改變。
首先我們建立第一人物視野。先倒入第一人物,在project里點擊右鍵導入character controller,然后再在這個選項中找到first person controller將它拖到hierarchy中,將第一人物拖到場景中調整人物位置,這樣第一人物就建立好了。
接下來我們進行第二步,調整高度。
private var controller:CharacterController=null; //建立角色對象
private var moveSpeed:float=0.4f; ?//上下移動步幅
private var cameraY:float=14.0f; ? //初始化人物高度
這里補充說一句,最好將攝像機位置放在綠柱的最上方,相當于人頭在身體的上方一樣,這里我把center中y軸的值設為了-4,負值代表向綠柱的上方移動,具體的值你要在場景中觀察,以人物高度來定,人物高度不同,這個值也是不同的。
private var pos:Vector3; ?//角色坐標
function Start () {controller=GetComponent(CharacterController);
? ?
}
function Update () {
controller.height=cameraY;
//按下Q鍵升高視野高度
? if(Input.GetKeyDown(KeyCode.Q))
? {
? if(controller.height<24) ?//規定一個升高的上限值
? {
? ? ? cameraY=cameraY+moveSpeed;
? ? controller.height=cameraY;
? ? controller.center.y=controller.center.y-0.2f;
? ? //升高角色y軸坐標值,防止因參數改變人物身體捅破地
? ?controller.transform.position=new Vector3(controller.transform.position.x,controller.transform.position.y+(moveSpeed*0.8f),controller.transform.position.z);
? ?}
? }
? //按下E鍵降低視野高度
? ?if(Input.GetKeyDown(KeyCode.E))
? {
? ? ?if(controller.height>8) ? //規定一個下降的下限值
? {
? ? cameraY=cameraY-moveSpeed;
? ? controller.height=cameraY;
? ? controller.center.y=controller.center.y+0.2f;
? ??
? ?controller.transform.position=new Vector3(controller.transform.position.x,controller.transform.position.y+(moveSpeed*0.8f),controller.transform.position.z);
? ? ?}
? }
? pos=controller.transform.position;
??
??
}
總結
以上是生活随笔為你收集整理的Unity之升高人物视野的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超市服务器软件系统软件,星宇超市收银软件
- 下一篇: 【Axure交互教程】 隐藏页面滚动条的