Unity3D實(shí)現(xiàn)人物移動示例
更新時間:2020年01月20日 15:14:05 作者:文藝V
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)人物移動示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
一個是通過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; //當(dāng)前人物動畫 private Object[] tex; //人物X坐標(biāo) private int x; //人物Y坐標(biāo) 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è)置默認(rèn)動畫 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)); //點(diǎn)擊按鈕移動人物 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) { //繪制當(dāng)前幀 GUI.DrawTexture(rect, (Texture)tex[nowFram], ScaleMode.StretchToFill, true, 0); //計(jì)算限制幀時間 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; //當(dāng)前人物動畫 private Object[] tex; //人物X坐標(biāo) private int x; //人物Y坐標(biāo) 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è)置默認(rèn)動畫 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)); //點(diǎn)擊按鈕移動人物 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) { //繪制當(dāng)前幀 GUI.DrawTexture(rect, (Texture)tex[nowFram], ScaleMode.StretchToFill, true, 0); //計(jì)算限制幀時間 time += Time.deltaTime; //超過限制幀則切換圖片 if (time >= 1.0 / fps) { //幀序列切換 nowFram++; //限制幀清空 time = 0; //超過幀動畫總數(shù)從第0幀開始 if (nowFram >= tex.Length) { nowFram = 0; } } } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Unity3D實(shí)現(xiàn)攝像機(jī)鏡頭移動并限制角度
- Unity3D實(shí)現(xiàn)控制攝像機(jī)移動
- Unity鍵盤WASD實(shí)現(xiàn)物體移動
- Unity3D實(shí)現(xiàn)虛擬按鈕控制人物移動效果
- Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動效果
- Unity實(shí)現(xiàn)物體左右移動效果
- Unity3D實(shí)現(xiàn)人物轉(zhuǎn)向與移動
- unity實(shí)現(xiàn)UI元素跟隨3D物體
- unity實(shí)現(xiàn)攝像頭跟隨
- Unity實(shí)現(xiàn)主角移動與攝像機(jī)跟隨
相關(guān)文章
C# 使用動態(tài)庫DllImport("kernel32")讀寫ini文件的步驟
kernel32.dll是Windows中非常重要的32位動態(tài)鏈接庫文件,屬于內(nèi)核級文件,這篇文章主要介紹了C# 利用動態(tài)庫DllImport("kernel32")讀寫ini文件,需要的朋友可以參考下2023-05-05C#自定義導(dǎo)出數(shù)據(jù)到Excel的類實(shí)例
這篇文章主要介紹了C#自定義導(dǎo)出數(shù)據(jù)到Excel的類,實(shí)例分析了C#操作Excel的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-03-03C# WinForm國際化實(shí)現(xiàn)的簡單方法
這篇文章主要介紹了C# WinForm國際化實(shí)現(xiàn)的簡單方法,有需要的朋友可以參考一下2014-01-01.NET連接MongoDB數(shù)據(jù)庫實(shí)例教程
這則小竅門將講述如何開發(fā)一個.NET應(yīng)用來連接Mongo數(shù)據(jù)庫并執(zhí)行多種操作。同時還稍微涉及了Mongo數(shù)據(jù)庫和多種命令2013-11-11