欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity3D實現(xiàn)人物移動示例

 更新時間:2020年01月20日 15:14:05   作者:文藝V  
這篇文章主要為大家詳細(xì)介紹了Unity3D實現(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));
 
  //點擊按鈕移動人物
  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);
  //計算限制幀時間
  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));
 
  //點擊按鈕移動人物
  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);
  //計算限制幀時間
  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文件的步驟

    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#自定義導(dǎo)出數(shù)據(jù)到Excel的類,實例分析了C#操作Excel的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C# WinForm國際化實現(xiàn)的簡單方法

    C# WinForm國際化實現(xiàn)的簡單方法

    這篇文章主要介紹了C# WinForm國際化實現(xiàn)的簡單方法,有需要的朋友可以參考一下
    2014-01-01
  • .NET連接MongoDB數(shù)據(jù)庫實例教程

    .NET連接MongoDB數(shù)據(jù)庫實例教程

    這則小竅門將講述如何開發(fā)一個.NET應(yīng)用來連接Mongo數(shù)據(jù)庫并執(zhí)行多種操作。同時還稍微涉及了Mongo數(shù)據(jù)庫和多種命令
    2013-11-11
  • C#加解密之AES算法的實現(xiàn)

    C#加解密之AES算法的實現(xiàn)

    一般我們來說呢,對于加密,我們分為可逆和不可逆??赡婕用苡挚煞譃閷ΨQ加密(AES、DES等)和非對稱加密(RSA),還有就是一些編碼加密等(BASE64);不可逆的呢,大部分又都稱為摘要算法(MD5、SHA)。本文將用C#實現(xiàn)AES算法,需要的可以參考一下
    2022-08-08
  • C#生成唯一值的方法匯總

    C#生成唯一值的方法匯總

    這篇文章主要介紹了C#生成唯一值的方法匯總,有需要的朋友可以參考一下
    2013-11-11
  • c# 空合并運算符“??”的使用詳解

    c# 空合并運算符“??”的使用詳解

    本篇文章是對c#中空合并運算符“??”的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#實現(xiàn)條形碼識別的解決方案分享

    C#實現(xiàn)條形碼識別的解決方案分享

    主流的識別庫主要有ZXing.NET和ZBar,OpenCV 4.0后加入了QR碼檢測和解碼功能,所以本文主要和大家分享了使用ZBar進(jìn)行條形碼識別的示例代碼,需要的可以參考一下
    2023-07-07
  • C# 設(shè)計模式系列教程-組合模式

    C# 設(shè)計模式系列教程-組合模式

    組合模式可以使客戶端調(diào)用簡單,它可以一致使用組合結(jié)構(gòu)或是其中單個對象,簡化了客戶端代碼。
    2016-06-06
  • C#堆排序?qū)崿F(xiàn)方法

    C#堆排序?qū)崿F(xiàn)方法

    這篇文章主要介紹了C#堆排序?qū)崿F(xiàn)方法,實例分析了C#對排序的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04

最新評論