转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6961080
本章博文的目的是利用上一章介绍的游戏摇杆来控制人物模型的移动,与行走动画的播放。
如上图所示Create中的文件夹male中存放着模型动画与贴图等,这个应该是美术提供给我们的。然后将整个male用鼠标拖动到左侧3D世界中,通过移动,旋转,缩放将人物模型放置在一个理想的位置。右侧红框内设置模型动画的属性。
Animation
idle1 该模型默认动画名称为idle1
Animations
size 该模型动画的数量
Element 该模型的动画名称
Play Automatically 是否自动播放
Animation Physics 是否设置该模型物理碰撞
Animation Only if Visable 是否设置该模型仅自己显示
给该模型绑定一个脚本Controller.cs 用来接收摇杆返回的信息更新模型动画。
Controller.cs
using UnityEngine;
using System.Collections;
public class Controller : 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 backState = 0;
//游戏摇杆对象
public MPJoystick moveJoystick;
//这个方法只调用一次,在Start方法之前调用
public void Awake() {
}
//这个方法只调用一次,在Awake方法之后调用
void Start () {
state = HERO_DOWN;
}
void Update () {
//获取摇杆控制的方向数据 上一章有详细介绍
float touchKey_x = moveJoystick.position.x;
float touchKey_y = moveJoystick.position.y;
if(touchKey_x == -1){
setHeroState(HERO_LEFT);
}else if(touchKey_x == 1){
setHeroState(HERO_RIGHT);
}
if(touchKey_y == -1){
setHeroState(HERO_DOWN);
}else if(touchKey_y == 1){
setHeroState(HERO_UP);
}
if(touchKey_x == 0 && touchKey_y ==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);
//模型移动
transform.Translate(transformValue, Space.World);
backState = state;
state = newState;
}
}
分享到:
相关推荐
Unity3D摇杆制作脚本1
Unity3d手机游戏开发经常用到的插件,easy touch5插件是非常实用的,可以很容易实现手游的虚拟摇杆功能控制游戏人物的走动方向。但此插件在Asset Store中是收费的,大约20美元,在这里我为同学们奉献出来了,记得...
本资源实现了摇杆控制Tank运动,效果见:https://zhyan8.blog.csdn.net/article/details/125986322
Easy Touch完全支持Unity自带的UGUI系统,基于C#事件通过委托机制传递输入消息,支持针对多个相机与多个层进行输入控制。Easy Touch 5在前面几版的基础上又加入了一些新功能,包括一些快捷手势、内置PlayMaker 1.8...
虚拟摇杆资源的下载,适用于各种手机平台的调用以及Unity3d的虚拟摇杆开放等。
Unity3D EasyTouch摇杆插件工具包
unity3d虚拟摇杆贴图集合,再也不用担心缺少虚拟摇杆的图片了
基于Unity3d UGUI实现的摇杆JoyStick,将预制体拖入Canvas节点中即可
unity3d实现虚拟摇杆,-
Unity3D Android 模拟游戏摇杆可操作人物 源码,绝对源码Unity3D Android 模拟游戏摇杆可操作人物 源码,绝对源码
unity3d摇杆插件,可绑定监听事件,控制人物移动,视觉等功能。
代码写的轻量级虚拟摇杆
资源名称:iOS游戏开发之Unity3D引擎系列资源目录:【】Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动【】Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放【】Unity3D 游戏引擎之IOS高级界面发送消息...
电子书下载 : http://blog.csdn.net/good3651/article/details/53420721 -------《Unity 3D游戏开发技术详解与典型案例》对Unity 3D集成开发环境界面、脚本的编写和众多高级特效的实现进行了详细的介绍,内容深入浅...
添加两个image 一个3d物体即可实现摇杆操控移动 下载即用
unity 虚拟摇杆easytouch UI贴图资源 很全面很全面。
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之iOS自定义游戏摇杆与飞机平滑的移动,欢迎大家下载阅读,哇咔咔~~
【Unity】UGUI超级简单的摇杆制作,摇杆控制物体移动!!!!!!!!!!!!!
主要为大家详细介绍了unity实现手机端摇杆控制人物移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Unity3d 摇杆控制人物移动的具体实现包。使用摇杆控制人物转动和与位移速度,越接近中心移动速度越慢,越接最大半径,也就是边缘移动速度最快。