Unity3D实现人物移动示例

一个是通过W、A、S、D来移动人物(示例一),另个是按屏幕上的按钮来移动人物(示例二)。很简单,只改了几行代码。

下面是“Assets”文件夹里面的资源。

示例一:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class E3_07keyboard : MonoBehaviour

{

//动画数组

private Object[] animUp;

private Object[] animDown;

private Object[] animLeft;

private Object[] animRight;

//地图贴图

private Texture2D map;

//当前人物动画

private Object[] tex;

//人物X坐标

private int x;

//人物Y坐标

private int y;

//帧序列

private int nowFram;

//动画帧的总数

private int mFrameCount;

//限制一秒多少帧

private float fps = 5;

//限制帧的时间

private float time = 0;

void Start()

{

//得到帧动画中的所有图片资源

animUp = Resources.LoadAll("up");

animDown = Resources.LoadAll("down");

animLeft = Resources.LoadAll("left");

animRight = Resources.LoadAll("right");

//得到地图资源

map = (Texture2D)Resources.Load("map/map");

//设置默认动画

tex = animUp;

}

void OnGUI()

{

//绘制贴图

GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), map, ScaleMode.StretchToFill, true, 0);

//绘制帧动画

DrawAnimation(tex, new Rect(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;

}

}

void DrawAnimation(Object[] tex, Rect rect)

{

//绘制当前帧

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;

}

}

}

}

示例二

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class E3_07button : MonoBehaviour

{

//动画数组

private Object[] animUp;

private Object[] animDown;

private Object[] animLeft;

private Object[] animRight;

//地图贴图

private Texture2D map;

//当前人物动画

private Object[] tex;

//人物X坐标

private int x;

//人物Y坐标

private int y;

//帧序列

private int nowFram;

//动画帧的总数

private int mFrameCount;

//限制一秒多少帧

private float fps = 5;

//限制帧的时间

private float time = 0;

void Start()

{

//得到帧动画中的所有图片资源

animUp = Resources.LoadAll("up");

animDown = Resources.LoadAll("down");

animLeft = Resources.LoadAll("left");

animRight = Resources.LoadAll("right");

//得到地图资源

map = (Texture2D)Resources.Load("map/map");

//设置默认动画

tex = animUp;

}

void OnGUI()

{

//绘制贴图

GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), map, ScaleMode.StretchToFill, true, 0);

//绘制帧动画

DrawAnimation(tex, new Rect(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;

}

}

void DrawAnimation(Object[] tex, Rect rect)

{

//绘制当前帧

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;

}

}

}

}

以上是 Unity3D实现人物移动示例 的全部内容, 来源链接: utcz.com/z/312181.html

回到顶部