在网上有非常多通过射线方式实现的人物行走控制脚本,可是假设仅仅是想通过键盘按键来控制的话。比方进行第三人称视角控制,事实上仅仅须要进行简单的角度变换就可以。思路例如以下:

1、依照顺时针方向设定前、右、后、左分别为0,1,2,3。

2、设定状态初值0,即朝向前方。

3、通过当前方向值减去前一次方向值,乘以90°即为转向角,然后进行旋转变换就可以。

using UnityEngine;
using System.Collections;
using System.Linq;
public class move: MonoBehaviour
{
private int State;//角色状态
private int oldState=0;//前一次角色的状态
private int UP = 0;//角色状态向前
private int RIGHT =1;//角色状态向右
private int DOWN = 2;//角色状态向后
private int LEFT = 3;//角色状态向左 public float speed=8; void Start()
{
}
void Update()
{
if (Input.GetKey("w"))
{
setState(UP);
}
else if (Input.GetKey("s"))
{
setState(DOWN);
} if (Input.GetKey("a"))
{
setState(LEFT);
}
else if (Input.GetKey("d"))
{
setState(RIGHT);
} } void setState(int currState)
{
Vector3 transformValue = new Vector3();//定义平移向量
int rotateValue = (currState - State) * 90;
transform.animation.Play("walk");//播放角色行走动画
switch (currState)
{
case 0://角色状态向前时,角色不断向前缓慢移动
transformValue = Vector3.forward * Time.deltaTime * speed;
break;
case 1://角色状态向右时。角色不断向右缓慢移动
transformValue = Vector3.right * Time.deltaTime * speed;
break;
case 2://角色状态向后时。角色不断向后缓慢移动
transformValue = Vector3.back * Time.deltaTime * speed;
break;
case 3://角色状态向左时,角色不断向左缓慢移动
transformValue = Vector3.left * Time.deltaTime * speed;
break;
}
transform.Rotate(Vector3.up, rotateValue);//旋转角色
transform.Translate(transformValue, Space.World);//平移角色
oldState = State;//赋值,方便下一次计算
State = currState;//赋值,方便下一次计算
} }

Unity3D:实现人物转向与移动的更多相关文章

  1. unity3d之控制人物转向移动并播放动画

    tip:transition 勾选Has Exit Time B动画播放完毕后就可以自己返回A不用代码控制.因为想做一个小人静止时 隔两秒会摆动小手的特效. 附上代码参考: using UnityEn ...

  2. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  3. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  4. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  5. warensoft unity3d 更新说明

    warensoft unity3d 组件的Alpha版本已经发布了将近一年,很多网友发送了改进的Email,感谢大家的支持. Warensoft Unity3D组件将继续更新,将改进的功能如下: 1. ...

  6. Unity3D框架插件uFrame实践记录(一)

    1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...

  7. Unity3D 5.3 新版AssetBundle使用方案及策略

    1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代. 因此,本文的主要 ...

  8. 山寨Unity3D?搜狐畅游的免费开源游戏引擎Genesis-3D

    在CSDN上看到了<搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源>(http://www.csdn.net/article/2013-11-21/2817585-cha ...

  9. 从Unity3D编译器升级聊起Mono

    接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...

随机推荐

  1. SVGImageView

    In essence, I'm trying to layer multiple ImageViews (one of which is a floor plan, the other a recta ...

  2. ubuntu清华源【转】

    https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 可以选择ubuntu的版本更新源.

  3. 名词解释 —— 抄送(cc)、银弹(silver bullet)

    抄送(Carbon Copy,carbon copy 本身的含义是复写本,副本),又简称为 CC. 在现代汉语中,含有抄写与送达的双重意思. 在网络术语中,抄送就是将邮件同时发送给收信人以外的人, 用 ...

  4. ubantu下NiFi单节点安装部署

    第一步,首先下载安装包:http://nifi.apache.org/download.html,博主下载的是1.4.0版本,直接下载的是编译后的文件. 第二步:将压缩包上传到服务器相应目录下,并且解 ...

  5. js设计模式-桥接模式

    桥接模式定义:桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化".这句话有三个关键词,也就是抽象化.实现化和 ...

  6. HDFS与java API应用

    java代码操作hadoop文件需要用hadoop的jar包,comment,hdfs,yarn,mapreduce,内均有有关jar包,eclipse操作hadoop还需要配置core-site.x ...

  7. JavaScript数组的操作

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  8. 移动端H5 判断IOS还是Android 平台

    1.方法 (function($) { var UA = window.navigator.userAgent; if(/Android|HTC/i.test(UA) || !!(window.nav ...

  9. Eclipse中添加对Python的中文支持

    原文链接:http://down.51cto.com/data/751371 首先要确保eclipse编辑器环境的编码为utf8,这个是大前提:其次如果py文件中含有中文字符的话,需要在py文件中对编 ...

  10. Linux系统编程@进程管理(一)

    课程目标: 构建一个基于主机系统的多客户即时通信/聊天室项目 涉及的理论知识 进程控制:僵尸进程/孤儿进程.进程控制.守护进程... 进程间通信:管道.命名管道.信号... 多线程编程: 锁.信号量. ...