首页 > 代码库 > unity3d-小案例之角色简单漫游

unity3d-小案例之角色简单漫游

准备资源

技术分享

我这里从网上下载一个角色模型,里面有一组动画。有站立、奔跑、杀怪等

我们来实现角色的前后左后移动,即键盘上的WSDA键,这里因为没有行走的动画。索性就用奔跑代替了!!

暂时先不计较代码冗余的情况。因为我也是刚学习的新手。一切为了先实现效果。

 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 frame15     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          * 移动前的向量为 v154          * 移动后的向量为 v255          * 那么当前目标物体就会旋转指向v2-v1的方向向量56          * LookAt()方法。要使用世界坐标系 Space.World57          * 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
 
 本节资源模型下载

http://pan.baidu.com/s/1ARiBO密钥:uqs8

unity3d-小案例之角色简单漫游