Unity2D 實(shí)現(xiàn)按鍵控制角色移動(dòng)的幾種方法

移動(dòng)是角色和游戲場(chǎng)景交互的基本功能呐籽,一般會(huì)先于其他功能實(shí)現(xiàn)

在實(shí)現(xiàn)移動(dòng)前疾牲,根據(jù)具體的游戲類型乍丈,要先大致確定要實(shí)現(xiàn)怎么樣的移動(dòng)操作體驗(yàn):

①橫版過(guò)關(guān),角色在地上跑的喉前,類似于超級(jí)馬里奧這種没酣,移動(dòng)的時(shí)候會(huì)有一定慣性王财,可以利用地面材質(zhì)的摩擦系數(shù)來(lái)實(shí)現(xiàn)

②彈幕射擊類游戲,類似于以撒的結(jié)合或者雷霆戰(zhàn)機(jī)裕便,角色要進(jìn)行很多躲避操作绒净,這時(shí)就不能有太大慣性

③太空戰(zhàn)斗類游戲,類似于遠(yuǎn)行星號(hào)偿衰,戰(zhàn)機(jī)根據(jù)質(zhì)量大小有著不同的機(jī)動(dòng)性疯溺,這時(shí)就需要考慮慣性包括轉(zhuǎn)向速度的影響

④俯視角走格子的2D游戲,馬基埃亞爾的傳說(shuō)的這種roguelike類的哎垦,每次移動(dòng)會(huì)移動(dòng)固定距離囱嫩,偏向于走格子,可以直接用moveposition來(lái)實(shí)現(xiàn)

類型①的游戲漏设,移動(dòng)一般通過(guò)添加rigidbody2D,并給此組件施加力或直接修改velocity來(lái)實(shí)現(xiàn)移動(dòng)墨闲,代碼示例:

if (buttonLDown == true && buttonRDown == false )//按下左鍵或右鍵,角色水平方向移動(dòng)郑口,并調(diào)整朝向

? ? ? ? {

? ? ? ? ? ? if (faceRight == true && isWall == false)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? playerObj.transform.localScale = new Vector3(-playerStarScale.x, playerStarScale.y, playerStarScale.z);

? ? ? ? ? ? ? ? faceRight = false;

? ? ? ? ? ? }

? ? ? ? ? ? playerRig.AddForce(new Vector2(-moveSpeed * Time.deltaTime, 0f));

? ? ? ? }

? ? ? ? else if (buttonRDown == true && buttonLDown == false )

? ? ? ? {

? ? ? ? ? ? if (faceRight == false && isWall == false)

? ? ? ? ? ? {//調(diào)整角色朝向

? ? ? ? ? ? ? ? playerObj.transform.localScale = new Vector3(playerStarScale.x, playerStarScale.y, playerStarScale.z);

? ? ? ? ? ? faceRight = true;

? ? ? ? ? ? }

? ? ? ? ? ? playerRig.AddForce(new Vector2(moveSpeed * Time.deltaTime, 0f));

? ? ? ? }

? ? ? ? if(buttonUDown == true&&jumpTime > 0 )

? ? ? ? {?//按空格的時(shí)間越長(zhǎng)鸳碧,跳的越高

? ? ? ? ? ? playerRig.velocity = new Vector2(playerRig.velocity.x, jumpSpeed);

? ? ? ? ? ? isGround = false;

? ? ? ? ? ? jumpTime -= 0.1f*Time.deltaTime;

? ? ? ? }

? ? ? ? if(isWall == true&&isGround ==false? )

? ? ? ? {

? ? ? ? ? ? //角色在墻上滑行

?? ? ? ? ? ?playerRig.velocity = new Vector2(playerRig.velocity.x, Physics2D.gravity.y * 0.005f);

? ? ? ? }

類型②的游戲在以上基礎(chǔ)上取消重力影響

類型③的游戲,增加慣性影響

類型④的游戲犬性,直接改變playerposition實(shí)現(xiàn)移動(dòng)

? ? ? ? PlayerRigid.MovePosition(Vector2.MoveTowards(transform.position, PlayerPosition, MoveSpeed * Time.deltaTime));

? ? ? ? if ((transform.position - PlayerPosition).magnitude > 0.5f) return;

? ? ? ? RestTimer += Time.deltaTime;

? ? ? ? if (RestTimer < RestTime)

? ? ? ? {?

? ? ? ? ? ? return;? ? ? ? ? ?

? ? ? ? }

? ? ? ? float h = Input.GetAxisRaw("Horizontal");

? ? ? ? float v = Input.GetAxisRaw("Vertical");

? ? ? ? if (h != 0)

? ? ? ? {

? ? ? ? ? ? v = 0;

? ? ? ? }

? ? ? ? if (hitObjBox.transform == null)

? ? ? ? {

? ? ? ? ? ? PlayerPosition += new Vector3(h, v,0);

? ? ? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞻离,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乒裆,更是在濱河造成了極大的恐慌套利,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹤耍,死亡現(xiàn)場(chǎng)離奇詭異肉迫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)稿黄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門喊衫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人杆怕,你說(shuō)我怎么就攤上這事族购。” “怎么了陵珍?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵寝杖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我撑教,道長(zhǎng)朝墩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮收苏,結(jié)果婚禮上亿卤,老公的妹妹穿的比我還像新娘。我一直安慰自己鹿霸,他們只是感情好排吴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懦鼠,像睡著了一般钻哩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肛冶,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天街氢,我揣著相機(jī)與錄音,去河邊找鬼睦袖。 笑死珊肃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的馅笙。 我是一名探鬼主播伦乔,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼董习!你這毒婦竟也來(lái)了烈和?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤皿淋,失蹤者是張志新(化名)和其女友劉穎招刹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沥匈,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔗喂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了高帖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡畦粮,死狀恐怖散址,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宣赔,我是刑警寧澤预麸,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站儒将,受9級(jí)特大地震影響吏祸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钩蚊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一贡翘、第九天 我趴在偏房一處隱蔽的房頂上張望蹈矮。 院中可真熱鬧,春花似錦鸣驱、人聲如沸泛鸟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)北滥。三九已至,卻和暖如春闸翅,著一層夾襖步出監(jiān)牢的瞬間再芋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工坚冀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留济赎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓遗菠,卻偏偏與公主長(zhǎng)得像联喘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辙纬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容