unity3d-小案例之角色簡單漫遊

準備資源

我這裏從網上下載一個角色模型,裏面有一組動畫。有站立、奔跑、殺怪等學習

咱們來實現角色的先後左後移動,即鍵盤上的WSDA鍵,這裏由於沒有行走的動畫。索性就用奔跑代替了!!動畫

暫時先不計較代碼冗餘的狀況。由於我也是剛學習的新手。一切爲了先實現效果。this

 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         //保存移動前位置
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");//開始奔跑
24 
25         }
26         if (Input.GetKey(KeyCode.S))
27         {
28             transform.Translate(Vector3.back * Time.deltaTime * speed, Space.World);
29             animation.Play("run");//開始奔跑
30 
31         }
32         if (Input.GetKey(KeyCode.A))
33         {
34             transform.Translate(Vector3.left * Time.deltaTime * speed, Space.World);
35             animation.Play("run");//開始奔跑
36 
37         }
38         if (Input.GetKey(KeyCode.D))
39         {
40             transform.Translate(Vector3.right * Time.deltaTime * speed, Space.World);
41             animation.Play("run");//開始奔跑
42 
43         }
44 
45 
46         //設置角色方向
47         /*
48          * LookAt(Vector3 worldPosition);
49          * 手冊上的解釋:旋轉物體,這個向前向量指向target的當前位置。
50 
51          * 我是這樣理解的:
52            假設:
53          * 移動前的向量爲 v1
54          * 移動後的向量爲 v2
55          * 那麼當前目標物體就會旋轉指向v2-v1的方向向量
56          * LookAt()方法。要使用世界座標系 Space.World
57          * transform.position - oldPosition :移動前的方向-移動後的方向=目標向量
58          * transform.position + transform.position - oldPosition :在當前位置轉向
59          */
60         transform.LookAt(transform.position + transform.position - oldPosition);
61     }
62 }

 

看到這裏是否是發現。角色跑遠後,愈來愈小了。由於這裏角色在跑。攝像機並無跟着跑動。那怎麼辦?
 
這裏要讓攝像機跟着角色移動,實現漫遊的效果,這裏很簡單。只須要把camera拖到角色對象中。做爲角色的子對象便可
 
 
 
這樣一比較效果是否是很明顯了
 
在上面的代碼中。咱們提到了LookAt方法。那它到底是一個什麼樣的方法呢。上面的代碼也有解釋,若是還不懂。咱們來對比下。
 
當移動角色。沒有使用LookAt方法就是什麼樣的效果,看下圖中。左邊角色是使用了LookAt,右邊角色是沒有使用
 
理解這句話:LookAt是使:旋轉物體,這個向前向量指向target的當前位置(來自手冊的解釋)
 
 
剛接觸unity3d不久。但我已經深深的被他所吸引了。加油。我必定要成爲Game Boy
 
 本節資源模型下載
相關文章
相關標籤/搜索