第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Unity2D:使用 UI 按鈕移動(dòng)播放器 - 平滑動(dòng)畫

Unity2D:使用 UI 按鈕移動(dòng)播放器 - 平滑動(dòng)畫

C#
達(dá)令說 2022-01-09 15:15:25
我有兩個(gè) UI 按鈕,用于控制玩家的移動(dòng)(左右),而不是使用按鈕腳本組件,我決定使用事件觸發(fā)腳本組件;一個(gè)點(diǎn)向下事件來移動(dòng)我的播放器和一個(gè)點(diǎn)向上事件來停止我的播放器的移動(dòng)。我的問題:我創(chuàng)建了一個(gè)行走動(dòng)畫(在我的動(dòng)畫師中),當(dāng)用戶按住左或右按鈕時(shí)將播放該動(dòng)畫,動(dòng)畫很流暢(這是我喜歡的)但是如果玩家要點(diǎn)擊按鈕一次(而不是點(diǎn)擊并按住按鈕)動(dòng)畫不播放并且移動(dòng)不移動(dòng)或者動(dòng)畫太快并且移動(dòng)非常短。我想要做的:我想保持玩家的運(yùn)動(dòng)方式,但我也希望在用戶點(diǎn)擊一次時(shí)為玩家提供流暢的動(dòng)畫和運(yùn)動(dòng)。這是我的腳本:public bool movingLeft = false;public bool movingRight = false;public float speed = 2f;public Vector3 moveDirectionLeft = Vector3.left;public Vector3 moveDirectionRight = Vector3.right; void Start () {    movingLeft = false;    movingRight = false;  } void Update () {     if (movingLeft == true) {                      // LEFT BUTTON //        WalkAnim.SetBool ("WalkLeft", true);// walk left            transform.Translate (moveDirectionLeft * speed * Time.deltaTime);     }  else if (movingLeft == false) {           speed = 0;           WalkAnim.SetBool ("WalkLeft", false); // goes back to idle     }     if (movingRight == true) {                         // RIGHT BUTTON //        WalkAnim.SetBool ("WalkRight", true); // walks right            transform.Translate (moveDirectionRight * speed * Time.deltaTime);     }  else if (movingLeft == false) {           speed = 0;           WalkAnim.SetBool ("WalkRight", false); // goes back to idle     } }public void limitLD() { // UI Button Event trigger - pointUp    movingLeft = false;}public void limitRD() { // UI Button Event trigger - pointUp    movingRight = false;}public void MoveLeft() { // UI Button Event trigger - pointDown        movingLeft = true;        movingRight = false;}public void MoveRight() { // UI Button Event trigger - pointDown        movingLeft = false;        movingRight = true;}
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

由于您的if...else陳述,會(huì)出現(xiàn)此問題。例如,如果您單擊Right按鈕,則void MoveRight()調(diào)用。它設(shè)置movingRight = true和movingLeft = false。


所以在你的Update()函數(shù)中,首先else if (movingLeft == false)運(yùn)行并將你的速度設(shè)置為 0 并將你的動(dòng)畫設(shè)置為空閑。和第二次if (movingRight == true)運(yùn)行。但是因?yàn)閟peed = 0and animation = idleandUpdate()函數(shù)在每一幀都被調(diào)用,所以什么也沒發(fā)生。


您可以將腳本更改為:


public bool movingLeft = false;

public bool movingRight = false;


public float speed = 2f;


public Vector3 moveDirectionLeft = Vector3.left;

public Vector3 moveDirectionRight = Vector3.right;



void Start()

{

    movingLeft = false;

    movingRight = false;

}


void Update() 

{

    if (movingLeft == true)

    {                      // LEFT BUTTON //

       WalkAnim.SetBool("WalkLeft", true);// walk left

       transform.Translate(moveDirectionLeft * speed * Time.deltaTime);

    }

    else if (movingRight == true)

    {                         // RIGHT BUTTON //

       WalkAnim.SetBool("WalkRight", true); // walks right

       transform.Translate(moveDirectionRight * speed * Time.deltaTime);

    }

    else

    {

       WalkAnim.SetBool("WalkLeft", false);

       WalkAnim.SetBool("WalkRight", false);

    }

}


public void limitLD()

{ // UI Button Event trigger - pointUp

    movingLeft = false;

}


public void limitRD()

{ // UI Button Event trigger - pointUp

    movingRight = false;

}


public void MoveLeft()

{ // UI Button Event trigger - pointDown

    movingLeft = true;

    movingRight = false;

}


public void MoveRight()

{ // UI Button Event trigger - pointDown

    movingLeft = false;

    movingRight = true;

}

我希望它對(duì)你有幫助。


查看完整回答
反對(duì) 回復(fù) 2022-01-09
  • 1 回答
  • 0 關(guān)注
  • 444 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)