Как заставить кнопку работать при удержании кнопки в Unity - PullRequest
0 голосов
/ 21 января 2020

Я новичок в Unity.

Есть один куб. Я хочу сделать куб go направо и налево непрерывно. Прямо сейчас это работает, только когда я убираю палец с нажатой кнопки (это 3d-игра).

Вот мой код:

public class PlayerMovement : MonoBehaviour
{
    public Rigidbody rb;    
    public float sidewaysforceand = 150f;
    public void rightforce()
    {
        rb.AddForce(sidewaysforceand * Time.deltaTime, 0, 0, ForceMode.VelocityChange);

    }
    public void leftforce()
    {
        rb.AddForce(-sidewaysforceand * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Вам необходимо поместить их обоих в один и тот же скрипт / Update, который отслеживает нажатие кнопок.

public void Update()
{
    float xChange = 0;
    if(Input.GetKey(rightButton))
         xChange ++;
    if(Input.GetKey(leftButton))
         xChange --;
    rb.AddForce(sidewaysforceand * Time.deltaTime * xChange, 0, 0, ForceMode.VelocityChange);
}

Если вы используете кнопки пользовательского интерфейса, вам придется использовать систему маркировки, такую ​​как:

bool rightFlag = false;
bool leftFlag = false;
public void Update()
{
    float xChange = 0;
    if(rightFlag)
         xChange ++;
    if(leftFlag)
         xChange --;
    rb.AddForce(sidewaysforceand * Time.deltaTime * xChange, 0, 0, ForceMode.VelocityChange);
}
public void EnableRightFlag() //put on button down press.
{
     rightFlag = true;
}
public void EnableLeftFlag() //put on button down press.
{
     leftFlag = true;
}

Тогда вам просто нужно добавить триггер, когда кнопка не нажата, чтобы установить флаги обратно в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...