Unity3D實現(xiàn)人物移動示例
更新時間:2020年01月20日 15:14:05 作者:文藝V
這篇文章主要為大家詳細介紹了Unity3D實現(xiàn)人物移動示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
一個是通過W、A、S、D來移動人物(示例一),另個是按屏幕上的按鈕來移動人物(示例二)。很簡單,只改了幾行代碼。
下面是“Assets”文件夾里面的資源。

示例一:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class E3_07keyboard : MonoBehaviour
{
//動畫數(shù)組
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;
//動畫幀的總數(shù)
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");
//設(shè)置默認動畫
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;
//超過幀動畫總數(shù)從第0幀開始
if (nowFram >= tex.Length)
{
nowFram = 0;
}
}
}
}

示例二
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class E3_07button : MonoBehaviour
{
//動畫數(shù)組
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;
//動畫幀的總數(shù)
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");
//設(shè)置默認動畫
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;
//超過幀動畫總數(shù)從第0幀開始
if (nowFram >= tex.Length)
{
nowFram = 0;
}
}
}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟
kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內(nèi)核級文件,這篇文章主要介紹了C# 利用動態(tài)庫DllImport("kernel32")讀寫ini文件,需要的朋友可以參考下2023-05-05
C#自定義導(dǎo)出數(shù)據(jù)到Excel的類實例
這篇文章主要介紹了C#自定義導(dǎo)出數(shù)據(jù)到Excel的類,實例分析了C#操作Excel的技巧,非常具有實用價值,需要的朋友可以參考下2015-03-03

