unity3d-小案例之角色简单漫游
生活随笔
收集整理的這篇文章主要介紹了
unity3d-小案例之角色简单漫游
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
準(zhǔn)備資源
我這里從網(wǎng)上下載一個(gè)角色模型,里面有一組動(dòng)畫(huà)。有站立、奔跑、殺怪等
我們來(lái)實(shí)現(xiàn)角色的前后左后移動(dòng),即鍵盤(pán)上的WSDA鍵,這里因?yàn)闆](méi)有行走的動(dòng)畫(huà)。索性就用奔跑代替了!!
暫時(shí)先不計(jì)較代碼冗余的情況。因?yàn)槲乙彩莿倢W(xué)習(xí)的新手。一切為了先實(shí)現(xiàn)效果。
1 using UnityEngine; 2 using System.Collections; 3 4 public class modelMove : MonoBehaviour 5 { 6 7 public float speed = 2; 8 // Use this for initialization 9 void Start() 10 { 11 12 } 13 14 // Update is called once per frame 15 void Update() 16 { 17 18 //保存移動(dòng)前位置 19 Vector3 oldPosition = transform.position; 20 if (Input.GetKey(KeyCode.W)) 21 { 22 transform.Translate(Vector3.forward * Time.deltaTime * speed, Space.World); 23 animation.Play("run");//開(kāi)始奔跑 24 25 } 26 if (Input.GetKey(KeyCode.S)) 27 { 28 transform.Translate(Vector3.back * Time.deltaTime * speed, Space.World); 29 animation.Play("run");//開(kāi)始奔跑 30 31 } 32 if (Input.GetKey(KeyCode.A)) 33 { 34 transform.Translate(Vector3.left * Time.deltaTime * speed, Space.World); 35 animation.Play("run");//開(kāi)始奔跑 36 37 } 38 if (Input.GetKey(KeyCode.D)) 39 { 40 transform.Translate(Vector3.right * Time.deltaTime * speed, Space.World); 41 animation.Play("run");//開(kāi)始奔跑 42 43 } 44 45 46 //設(shè)置角色方向 47 /* 48 * LookAt(Vector3 worldPosition); 49 * 手冊(cè)上的解釋:旋轉(zhuǎn)物體,這個(gè)向前向量指向target的當(dāng)前位置。 50 51 * 我是這樣理解的: 52 假設(shè): 53 * 移動(dòng)前的向量為 v1 54 * 移動(dòng)后的向量為 v2 55 * 那么當(dāng)前目標(biāo)物體就會(huì)旋轉(zhuǎn)指向v2-v1的方向向量 56 * LookAt()方法。要使用世界坐標(biāo)系 Space.World 57 * transform.position - oldPosition :移動(dòng)前的方向-移動(dòng)后的方向=目標(biāo)向量 58 * transform.position + transform.position - oldPosition :在當(dāng)前位置轉(zhuǎn)向 59 */ 60 transform.LookAt(transform.position + transform.position - oldPosition); 61 } 62 }?
看到這里是不是發(fā)現(xiàn)。角色跑遠(yuǎn)后,越來(lái)越小了。因?yàn)檫@里角色在跑。攝像機(jī)并沒(méi)有跟著跑動(dòng)。那怎么辦? 這里要讓攝像機(jī)跟著角色移動(dòng),實(shí)現(xiàn)漫游的效果,這里很簡(jiǎn)單。只需要把camera拖到角色對(duì)象中。作為角色的子對(duì)象即可 這樣一比較效果是不是很明顯了 在上面的代碼中。我們提到了LookAt方法。那它究竟是一個(gè)什么樣的方法呢。上面的代碼也有解釋,如果還不懂。我們來(lái)對(duì)比下。 當(dāng)移動(dòng)角色。沒(méi)有使用LookAt方法就是什么樣的效果,看下圖中。左邊角色是使用了LookAt,右邊角色是沒(méi)有使用 理解這句話(huà):LookAt是使:旋轉(zhuǎn)物體,這個(gè)向前向量指向target的當(dāng)前位置(來(lái)自手冊(cè)的解釋) 剛接觸unity3d不久。但我已經(jīng)深深的被他所吸引了。加油。我一定要成為Game Boy 本節(jié)資源模型下載http://pan.baidu.com/s/1ARiBO 密鑰:uqs8
轉(zhuǎn)載于:https://www.cnblogs.com/niboy/p/4211549.html
總結(jié)
以上是生活随笔為你收集整理的unity3d-小案例之角色简单漫游的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 杭电acm2059-龟兔赛跑 java
- 下一篇: 查看硬件信息