Unity3D实现人物移动示例
一个是通过W、A、S、D来移动人物(示例一),另个是按屏幕上的按钮来移动人物(示例二)。很简单,只改了几行代码。
下面是“Assets”文件夹里面的资源。
示例一:
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassE3_07keyboard:MonoBehaviour
{
//动画数组
privateObject[]animUp;
privateObject[]animDown;
privateObject[]animLeft;
privateObject[]animRight;
//地图贴图
privateTexture2Dmap;
//当前人物动画
privateObject[]tex;
//人物X坐标
privateintx;
//人物Y坐标
privateinty;
//帧序列
privateintnowFram;
//动画帧的总数
privateintmFrameCount;
//限制一秒多少帧
privatefloatfps=5;
//限制帧的时间
privatefloattime=0;
voidStart()
{
//得到帧动画中的所有图片资源
animUp=Resources.LoadAll("up");
animDown=Resources.LoadAll("down");
animLeft=Resources.LoadAll("left");
animRight=Resources.LoadAll("right");
//得到地图资源
map=(Texture2D)Resources.Load("map/map");
//设置默认动画
tex=animUp;
}
voidOnGUI()
{
//绘制贴图
GUI.DrawTexture(newRect(0,0,Screen.width,Screen.height),map,ScaleMode.StretchToFill,true,0);
//绘制帧动画
DrawAnimation(tex,newRect(x,y,32,48));
//点击按钮移动人物
if(Input.GetKey(KeyCode.W))
{
y-=2;
tex=animUp;
}
if(Input.GetKey(KeyCode.S))
{
y+=2;
tex=animDown;
}
if(Input.GetKey(KeyCode.A))
{
x-=2;
tex=animLeft;
}
if(Input.GetKey(KeyCode.D))
{
x+=2;
tex=animRight;
}
}
voidDrawAnimation(Object[]tex,Rectrect)
{
//绘制当前帧
GUI.DrawTexture(rect,(Texture)tex[nowFram],ScaleMode.StretchToFill,true,0);
//计算限制帧时间
time+=Time.deltaTime;
//超过限制帧则切换图片
if(time>=1.0/fps)
{
//帧序列切换
nowFram++;
//限制帧清空
time=0;
//超过帧动画总数从第0帧开始
if(nowFram>=tex.Length)
{
nowFram=0;
}
}
}
}
示例二
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassE3_07button:MonoBehaviour
{
//动画数组
privateObject[]animUp;
privateObject[]animDown;
privateObject[]animLeft;
privateObject[]animRight;
//地图贴图
privateTexture2Dmap;
//当前人物动画
privateObject[]tex;
//人物X坐标
privateintx;
//人物Y坐标
privateinty;
//帧序列
privateintnowFram;
//动画帧的总数
privateintmFrameCount;
//限制一秒多少帧
privatefloatfps=5;
//限制帧的时间
privatefloattime=0;
voidStart()
{
//得到帧动画中的所有图片资源
animUp=Resources.LoadAll("up");
animDown=Resources.LoadAll("down");
animLeft=Resources.LoadAll("left");
animRight=Resources.LoadAll("right");
//得到地图资源
map=(Texture2D)Resources.Load("map/map");
//设置默认动画
tex=animUp;
}
voidOnGUI()
{
//绘制贴图
GUI.DrawTexture(newRect(0,0,Screen.width,Screen.height),map,ScaleMode.StretchToFill,true,0);
//绘制帧动画
DrawAnimation(tex,newRect(x,y,32,48));
//点击按钮移动人物
if(GUILayout.RepeatButton("向上"))
{
y-=2;
tex=animUp;
}
if(GUILayout.RepeatButton("向下"))
{
y+=2;
tex=animDown;
}
if(GUILayout.RepeatButton("向左"))
{
x-=2;
tex=animLeft;
}
if(GUILayout.RepeatButton("向右"))
{
x+=2;
tex=animRight;
}
}
voidDrawAnimation(Object[]tex,Rectrect)
{
//绘制当前帧
GUI.DrawTexture(rect,(Texture)tex[nowFram],ScaleMode.StretchToFill,true,0);
//计算限制帧时间
time+=Time.deltaTime;
//超过限制帧则切换图片
if(time>=1.0/fps)
{
//帧序列切换
nowFram++;
//限制帧清空
time=0;
//超过帧动画总数从第0帧开始
if(nowFram>=tex.Length)
{
nowFram=0;
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。