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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Unity2D:使用 UI 按鈕移動播放器 - 平滑動畫

Unity2D:使用 UI 按鈕移動播放器 - 平滑動畫

C#
達令說 2022-01-09 15:15:25
我有兩個 UI 按鈕,用于控制玩家的移動(左右),而不是使用按鈕腳本組件,我決定使用事件觸發(fā)腳本組件;一個點向下事件來移動我的播放器和一個點向上事件來停止我的播放器的移動。我的問題:我創(chuà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貢獻1998條經(jīng)驗 獲得超6個贊

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


所以在你的Update()函數(shù)中,首先else if (movingLeft == false)運行并將你的速度設置為 0 并將你的動畫設置為空閑。和第二次if (movingRight == true)運行。但是因為speed = 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;

}

我希望它對你有幫助。


查看完整回答
反對 回復 2022-01-09
  • 1 回答
  • 0 關注
  • 458 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號