国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)工程師—aspseo一鍵優(yōu)化

動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)工程師—asp,seo一鍵優(yōu)化,網(wǎng)站的內(nèi)容建設(shè),app游戲開(kāi)發(fā)公司哪家好最終效果 前言 我們要實(shí)現(xiàn)的功能是雙擊疾跑,當(dāng)玩家快速地按下同一個(gè)移動(dòng)鍵兩次時(shí)能進(jìn)入跑步狀態(tài) 我假設(shè)快速按下的定義為0.2秒內(nèi),按下同一按鍵兩次 簡(jiǎn)單的分析一下需求,實(shí)現(xiàn)它的關(guān)鍵在于獲得按鍵按下的時(shí)間,我們需要知道第一次…

最終效果

在這里插入圖片描述

前言

我們要實(shí)現(xiàn)的功能是雙擊疾跑,當(dāng)玩家快速地按下同一個(gè)移動(dòng)鍵兩次時(shí)能進(jìn)入跑步狀態(tài)

我假設(shè)快速按下的定義為0.2秒內(nèi),按下同一按鍵兩次

簡(jiǎn)單的分析一下需求,實(shí)現(xiàn)它的關(guān)鍵在于獲得按鍵按下的時(shí)間,我們需要知道第一次按下按鍵的時(shí)間,然后判斷規(guī)定時(shí)間內(nèi)有沒(méi)有按下按鍵

有兩種實(shí)現(xiàn)方法
第一種
啟動(dòng)一個(gè)計(jì)時(shí)器,判斷在計(jì)時(shí)器結(jié)束之前有沒(méi)有再次按下這個(gè)鍵
在這里插入圖片描述
第二種
是分別記錄下兩次按鍵的時(shí)間,然后用第二次按下的時(shí)間減去第一次按下的時(shí)間,判斷是否小于0.2
在這里插入圖片描述
這里我采用第二種方法,為了獲取按下的時(shí)間,我們需要使用到Unity給我們提供的Time類,里面的Time.time會(huì)提供游戲啟動(dòng)到現(xiàn)在運(yùn)行了多少秒,這個(gè)需求還需要我們檢測(cè)到按鍵是否被按下,我打算使用Input Manager來(lái)實(shí)現(xiàn)

public static float GetAxis (string axisName);
public static float GetAxisRaw(string axisName);

GetAxisRaw會(huì)在檢測(cè)到按鍵后,馬上返回1或-1,松開(kāi)按鍵后馬上變成0
而GetAxis會(huì)在檢測(cè)到按鍵的時(shí)候,從0過(guò)渡到1或-1,松開(kāi)按鍵后再過(guò)渡到0

為了方便,我使用GetAxisRaw來(lái)獲得輸入的時(shí)間,當(dāng)按鍵按下時(shí)意味著GetAxisRaw的返回值為1的絕對(duì)值,我們?cè)诜蠗l件的時(shí)候使用Time.time來(lái)獲得當(dāng)前的時(shí)間即可

但顯然,我們不希望玩家按下a后馬上按下d,還能讓人物進(jìn)入到疾跑狀態(tài),所以兩個(gè)按鍵的輸入時(shí)間要分開(kāi)存儲(chǔ),還有一個(gè)需要注意的地方是,當(dāng)玩家開(kāi)始走路或疾跑時(shí),a鍵或d鍵是按住不放的,所以當(dāng)玩家在移動(dòng)的時(shí)候,我們要使個(gè)bool變量為真,當(dāng)這個(gè)變量為真時(shí),就不再刷新輸入的時(shí)間

我們?cè)O(shè)想一下,玩家進(jìn)入游戲以后,馬上按下了一次移動(dòng)鍵,如果他電腦開(kāi)游戲開(kāi)的特別的快,他第一次按下移動(dòng)鍵的時(shí)間,離打開(kāi)游戲不到0.2秒,如果我們存儲(chǔ)按鍵時(shí)間的變量,沒(méi)有初始化,那么會(huì)默認(rèn)賦值為0,當(dāng)他第一次按下移動(dòng)時(shí),就會(huì)進(jìn)入到疾跑狀態(tài),這很明顯是我們不想要看到的bug

所以最后一個(gè)要點(diǎn)是給存儲(chǔ)按鍵時(shí)間的變量進(jìn)行初始化,但初始化的只要賦值為多少也是一個(gè)值得考慮的問(wèn)題,如果賦值為一個(gè)極大的正數(shù),就算賦值為1萬(wàn),萬(wàn)一玩家一開(kāi)始在掛機(jī)剛好在10,000.01秒,按一下移動(dòng)按鍵,還是會(huì)錯(cuò)誤地進(jìn)入到疾跑狀態(tài),所以可以給他賦值為,負(fù)的最大等待輸入時(shí)間,如果實(shí)在不放心,可以賦值為2倍,這樣第一次輸入就不會(huì)出現(xiàn)bug

經(jīng)過(guò)了這么多的分析,相信你此時(shí)此刻已經(jīng)完全明白了,接下來(lái)我們進(jìn)入到代碼實(shí)戰(zhàn)環(huán)節(jié)

開(kāi)始

配置動(dòng)畫(huà),walk為true進(jìn)入走路動(dòng)畫(huà),run為true進(jìn)入跑步動(dòng)畫(huà)
在這里插入圖片描述

public class PlayerController : MonoBehaviour
{private Rigidbody2D rb;private Animator animator;public float maxAwaitTime;private float leftPressTime, rightPressTime;private bool moving, canRun;public int walkSpeed, runSpeed;private int currentSpeed;private float h;private void Awake(){rb = GetComponent<Rigidbody2D>();animator = GetComponent<Animator>();leftPressTime = rightPressTime = -maxAwaitTime;}private void Update(){h = Input.GetAxisRaw("Horizontal");ChangeFaceDirection();CheckRun();}private void ChangeFaceDirection(){if (h == 1){transform.localScale = new Vector3(1, 1, 1);}else if (h == -1){transform.localScale = new Vector3(-1, 1, 1);}}private void CheckRun(){if (h == 1 && !moving){if (Time.time - rightPressTime <= maxAwaitTime){canRun = true;}rightPressTime = Time.time;}if (h == -1 && !moving){if (Time.time - leftPressTime <= maxAwaitTime){canRun = true;}leftPressTime = Time.time;}//取 h 的絕對(duì)值if (Mathf.Abs(h) == 1){moving = true;if (canRun){currentSpeed = runSpeed;animator.SetBool("run", true);}else{currentSpeed = walkSpeed;animator.SetBool("walk", true);}}else{animator.SetBool("run", false);animator.SetBool("walk", false);moving = false;canRun = false;}}private void FixedUpdate(){rb.velocity = new Vector2(h * currentSpeed * Time.deltaTime, rb.velocity.y);}
}

效果
在這里插入圖片描述

參考

【視頻】https://www.bilibili.com/video/BV1YN4113771/

完結(jié)

贈(zèng)人玫瑰,手有余香!如果文章內(nèi)容對(duì)你有所幫助,請(qǐng)不要吝嗇你的點(diǎn)贊評(píng)論和關(guān)注,以便我第一時(shí)間收到反饋,你的每一次支持都是我不斷創(chuàng)作的最大動(dòng)力。當(dāng)然如果你發(fā)現(xiàn)了文章中存在錯(cuò)誤或者有更好的解決方法,也歡迎評(píng)論私信告訴我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奮斗的開(kāi)發(fā)者,出于興趣愛(ài)好,于是最近才開(kāi)始自習(xí)unity。如果你遇到任何問(wèn)題,也歡迎你評(píng)論私信找我, 雖然有些問(wèn)題我可能也不一定會(huì),但是我會(huì)查閱各方資料,爭(zhēng)取給出最好的建議,希望可以幫助更多想學(xué)編程的人,共勉~
在這里插入圖片描述

http://m.aloenet.com.cn/news/31136.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)的需求怎么寫(xiě)項(xiàng)目?jī)?yōu)化seo
  • 寧波網(wǎng)站建設(shè)c nb網(wǎng)站優(yōu)化網(wǎng)
  • 全面做好政府網(wǎng)站建設(shè)管理工作的通知免費(fèi)營(yíng)銷培訓(xùn)
  • 標(biāo)識(shí)設(shè)計(jì)廠家珠海百度搜索排名優(yōu)化
  • 網(wǎng)站制作詳細(xì)流程凈水器十大品牌
  • 網(wǎng)站做視頻在線觀看網(wǎng)址網(wǎng)站開(kāi)發(fā)合同
  • 陽(yáng)江招聘網(wǎng)站哪個(gè)靠譜松原頭條新聞今日新聞最新
  • 廊坊網(wǎng)站建設(shè)技術(shù)外包百度平臺(tái)聯(lián)系方式
  • 網(wǎng)站頁(yè)腳信息網(wǎng)站播放視頻速度優(yōu)化
  • 電子商務(wù)網(wǎng)站建設(shè)預(yù)算微信公眾平臺(tái)開(kāi)發(fā)
  • 公司網(wǎng)站購(gòu)物平臺(tái)建設(shè)百度網(wǎng)盤(pán)網(wǎng)頁(yè)登錄入口
  • 網(wǎng)站a記錄的是做cname營(yíng)銷方案怎么寫(xiě)?
  • 免費(fèi)的創(chuàng)建個(gè)人網(wǎng)站武漢大學(xué)人民醫(yī)院光谷院區(qū)
  • php做網(wǎng)站主要怎么布局百度明星人氣排行榜
  • 美容產(chǎn)品網(wǎng)站建設(shè)多少錢(qián)seo診斷網(wǎng)站
  • 手機(jī)h5頁(yè)面制作教程關(guān)鍵詞seo排名怎么選
  • 東京購(gòu)物商城百度整站優(yōu)化
  • 技術(shù)支持 鄭州做網(wǎng)站企業(yè)網(wǎng)搭建
  • 旅游網(wǎng)站的導(dǎo)航怎么做陜西網(wǎng)站設(shè)計(jì)
  • 南寧網(wǎng)站建設(shè)醉懂網(wǎng)絡(luò)外鏈官網(wǎng)
  • 企業(yè)網(wǎng)站建設(shè)服務(wù)公司搜索引擎優(yōu)化工具
  • 北京建站推廣全網(wǎng)推廣公司
  • b2c網(wǎng)站怎么做google關(guān)鍵詞搜索技巧
  • 網(wǎng)站平臺(tái)免費(fèi)游戲推廣員每天做什么
  • 學(xué)校網(wǎng)站建設(shè)調(diào)研報(bào)告天津疫情最新情況
  • 做網(wǎng)站平臺(tái)營(yíng)銷網(wǎng)站建站公司
  • 哪些網(wǎng)站專門(mén)做細(xì)胞的好的搜索引擎推薦
  • wordpress評(píng)論框加游戲優(yōu)化大師官方下載
  • 中英網(wǎng)站開(kāi)發(fā)青島官網(wǎng)seo方法
  • 網(wǎng)站測(cè)試頁(yè)面怎么做網(wǎng)站推廣途徑和推廣要點(diǎn)