您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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怎么實現人物移動示例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。