上下左右 键控制人移动
2013-12-09 16:51
344 查看
出自Unity3D开发一书,
这个脚本式只是简单的控制人物移动,不是很理想,但是可以学习 通过 上 、下、左、右 按键怎么实现任务的移动
using UnityEngine;
using System.Collections;
public class MoveByADSW : 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 = 2;
//初始化人物位置
public void Awake()
{
state = HERO_UP;
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//获取控制的方向, 上下左右,
float KeyVertical = Input.GetAxis("Vertical");
float KeyHorizontal = Input.GetAxis("Horizontal");
Debug.Log("keyVertical" + KeyVertical);
Debug.Log("keyHorizontal" + KeyHorizontal);
if(KeyVertical == -1)
{
setHeroState(HERO_DOWN);
}
else if(KeyVertical == 1)
{
setHeroState(HERO_UP);
}
if(KeyHorizontal == 1)
{
setHeroState(HERO_RIGHT);
}
else if(KeyHorizontal == -1)
{
setHeroState(HERO_LEFT);
}
if(KeyVertical == 0 && KeyHorizontal == 0)
{
animation.Play("idle");
}
}
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);
//移动人物
transform.Translate(transformValue * moveSpeed, Space.World);
state = newState;
}
}
这个脚本式只是简单的控制人物移动,不是很理想,但是可以学习 通过 上 、下、左、右 按键怎么实现任务的移动
using UnityEngine;
using System.Collections;
public class MoveByADSW : 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 = 2;
//初始化人物位置
public void Awake()
{
state = HERO_UP;
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//获取控制的方向, 上下左右,
float KeyVertical = Input.GetAxis("Vertical");
float KeyHorizontal = Input.GetAxis("Horizontal");
Debug.Log("keyVertical" + KeyVertical);
Debug.Log("keyHorizontal" + KeyHorizontal);
if(KeyVertical == -1)
{
setHeroState(HERO_DOWN);
}
else if(KeyVertical == 1)
{
setHeroState(HERO_UP);
}
if(KeyHorizontal == 1)
{
setHeroState(HERO_RIGHT);
}
else if(KeyHorizontal == -1)
{
setHeroState(HERO_LEFT);
}
if(KeyVertical == 0 && KeyHorizontal == 0)
{
animation.Play("idle");
}
}
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);
//移动人物
transform.Translate(transformValue * moveSpeed, Space.World);
state = newState;
}
}
相关文章推荐
- JAVA用画板JFrame画布Panel画笔Graphics画100个星星可以任意拖拽,可以按上下左右控制字或者月亮的移动,shift控制移动字还是月亮-end版
- js 键盘控制表格input上下左右移动
- Unity 3D 控制物体上下左右均匀移动脚本
- js实现按键球,小球随键盘上下左右控制移动
- jQuery实现用方向键控制层的上下左右移动
- 【AS3代码】键盘控制影片剪辑上下左右移动!!
- unity中如何用鼠标右键控制摄像机视角上下左右移动
- java事件机制之通过上下左右键来控制小球为位置的移动演示
- Isometric Game Programming 笔记(二)按键控制地图上下左右方向移动
- html中上下左右控制对象移动Demo
- jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
- <Unity3D>上下左右 键控制人移动
- 键盘控制div上下左右移动 (转)
- java事件机制之通过上下左右键来控制小球为位置的移动演示
- jQuery实现用方向键控制层的上下左右移动
- unity3d控制物品的移动(鼠标或上下左右WASD)
- 【 java版坦克大战--事件处理】 键盘控制小球上下左右移动
- 上下左右 键控制人移动
- 控制控件上下左右移动
- js实现键盘的上下左右控制图片移动