Здравствуйте, помогите решить проблему. Имеется скрипт передвижения персонажа вперёд и назад по клику мыши. Проблема заключается в том, что для смены направления персонажа нужно кликать несколько раз.
Сам скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovment : MonoBehaviour {
private Rigidbody2D rb;
private bool isFacingRight = true;
private bool isGrounded;
private Animator anim;
[Header("Value:")]
public float speed;
public float jumpForce;
public Transform groundCheck;
public float checkRadius;
public LayerMask whatIsGround;
[Header("ExtraJumps:")]
private int extraJumps;
public int extraJumpsValue;
void Start() {
extraJumps = extraJumpsValue;
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void FixedUpdate()
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
int t = 1;
rb.velocity = new Vector2(t * speed, rb.velocity.y);
if (Input.GetMouseButtonDown(1))
{
if (isFacingRight == true)
{
Flip();
t = -1;
Debug.Log("->");
isFacingRight = false;
}
else if (isFacingRight == false)
{
Flip();
t = 1;
Debug.Log("<-");
isFacingRight = true;
}
}
}
void Update()
{
if (isGrounded == true)
{
extraJumps = extraJumpsValue;
anim.SetBool("isJump", false);
}
if ((Input.GetMouseButtonDown(0) && extraJumps > 0))
{
rb.velocity = Vector2.up * jumpForce;
extraJumps--;
anim.SetBool("isJump", true);
}
else if ((Input.GetMouseButtonDown(0) && extraJumps == 0 && isGrounded == true))
{
rb.velocity = Vector2.up * jumpForce;
anim.SetBool("isJump", true);
}
}
private void Flip()
{
//меняем направление движения персонажа
isFacingRight = !isFacingRight;
//получаем размеры персонажа
Vector3 theScale = transform.localScale;
//зеркально отражаем персонажа по оси Х
theScale.x *= -1;
//задаем новый размер персонажа, равный старому, но зеркально отраженный
transform.localScale = theScale;
}
}