Unity, кнопка не работает при зажатии
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField] private float speed;
[SerializeField] private int lives;
[SerializeField] private float jumpForce;
private Rigidbody2D rb;
private SpriteRenderer sr;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
sr = GetComponentInChildren<SpriteRenderer>();
}
public void Left()
{
rb.velocity = new Vector2(-speed, rb.velocity.y);
sr.flipX = true;
}
public void Right()
{
rb.velocity = new Vector2(speed, rb.velocity.y);
sr.flipX = false;
}
}
кнопки(влево и вправо) работают только при клике хотя к ним я добавил event trigger, а там pointer down

Ответы (1 шт):
Автор решения: Qwer
→ Ссылка
PointerDown только отлавливает однократное нажатие. Если нужно имитировать нажатие, то его нужно использовать в паре с PointerUp.
Нужно завести флаг, что кнопка нажата, PointerDown будет устанавливать его, а PointerUp сбрасывать. А в FixedUpdate (раз у тебя через физику сделано) проверять если флаг стоит, то двигаем персонажа. Для другой кнопки аналогично.
bool moveRightPressed;
bool moveLeftPressed;
void FixedUpdate ()
{
if (moveRightPressed)
{
Right();
}
else if (moveLeftPressed)
{
Left();
}
}
//для правой кнопки, повесить в EventTrigger
public void OnRightButtonDown ()
{
moveRightPressed = true;
}
public void OnRightButtonUp ()
{
moveRightPressed = false;
}
void Right ()
{
//тут двигаем вправо
}
//для левой кнопки, повесить в EventTrigger
public void OnLeftButtonDown ()
{
moveLeftPressed = true;
}
public void OnLeftButtonUp ()
{
moveLeftPressed = false;
}
void Left ()
{
//тут двигаем влево
}