【Unity3D实战项目:疯狂杀戮】角色模型的行走控制(一)

来源:互联网 发布:vb自动化编程 编辑:程序博客网 时间:2024/05/16 19:06
猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=342


今天正式开始了第一个实战项目【疯狂杀戮】的开发教程,在教程中我会讲解整个游戏的开发过程,整个开发过程是建立在你已经基本明白了最基本的地形操作和一些基本API的使用。
 
我选的项目第一篇教学是控制角色的移动,这是最基本的游戏控制。
 
OK,开场白结束,开始咯~
 

第一步:简单场景的搭建:


1、首先请打开Unity,新建一个Unity工程。

2、新建的工程默认会加入Main Camera,我们加入一个地形Terrain,Terrain->create Terrain。

这时你发现场景都是黑黑的,我们在加一个方向光光源(可以理解成太阳)Directional light,选中工程的Hierarchy面板,Create->Directional light。

3、导入角色模型文件,可以直接把模型人物文件复制到工程的Assets目录下,Unity会自己刷新并加载模型文件。

4、在Project面板,选中我们导入的模型文件,拖拽到Scene场景中,并调节好位置,起码让自己能看到它在哪。

 

OK,一个最简单的场景搭建完毕。

Scene面板:




Hierarchy面板、Project面板:



第二步:脚本控制角色移动:


1、选中Project面板,新建一个文件夹Create->Folder,命名为MyScript,这个文件夹用来存放我们自己写的脚本文件。良好的编程习惯还是需要滴…

2、选中MyScript文件夹,Create->C# Script,命名为BarbariansControl。当然你也可以使用js脚本。API都是一样的。

3、双击打开创建的BarbariansControl脚本文件,Unity会默认使用MomoDevelop编辑器进行编辑。(你也可以选择使用自己熟悉的IDE)。

4、代码的编写:


Unity对新建的文件会自动创建一些函数。


最常见的Update,系统每一帧都会自己调用。(点击查看更多详细介绍)

代码:

using UnityEngine;using System.Collections;public class BarbariansControl : MonoBehaviour { public const int HERO_UP= 0; public const int HERO_RIGHT= 1; public const int HERO_DOWN= 2; public const int HERO_LEFT= 3;public int state = 0; public int moveSpeed = 10; public void Awake() { state = HERO_UP; } void Update () { float KeyVertical = Input.GetAxis ("Vertical") ; float KeyHorizontal = Input.GetAxis ("Horizontal"); if(KeyVertical == 1){ //up setHeroState(HERO_UP); }else if(KeyVertical == -1){ //down setHeroState(HERO_DOWN); } if(KeyHorizontal == 1){ //right setHeroState(HERO_RIGHT); }else if(KeyHorizontal == -1){ //left setHeroState(HERO_LEFT); }if(KeyVertical == 0 && KeyHorizontal ==0){ animation.Play(); } } public void setHeroState(int newState) { int rotateValue = (newState - state) * 90; Vector3 transformValue = new Vector3(); animation.Play("walk"); switch(newState){ case HERO_UP: transformValue = Vector3.forward * Time.deltaTime; break; case HERO_DOWN: transformValue = -Vector3.forward * Time.deltaTime; break; case HERO_LEFT: transformValue = Vector3.left * Time.deltaTime; break; case HERO_RIGHT: transformValue = -Vector3.left * Time.deltaTime; break; } transform.Rotate(Vector3.up, rotateValue); //move transform.Translate(transformValue * moveSpeed, Space.World); state = newState; }}

编写完毕后,回到Unity工程,选中Project面板中的BarbariansControl脚本文件,鼠标拖拽到Hierarchy面板中的角色模型上,进行脚本绑定。


OK,Run一个工程,看看效果:



注:

float KeyVertical = Input.GetAxis ("Vertical") ;
float KeyHorizontal = Input.GetAxis ("Horizontal");

这是利用Unity有的的输入管理器,获取水平和竖直方向。目前不清楚的可以先不用管,知道它的返回值1和-1可以表示上下和左右就可以了。后面我会介绍的。