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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。