У меня есть двухмерный спрайт, который я просто пытаюсь перевернуть по оси x при нажатии кнопки.По какой-то причине он просто не отвечает мне, хотя все остальные аргументы таковы.Я не получаю никаких сообщений об ошибках.у кого-нибудь есть решение?Это сводит меня с ума, потому что я делал это несколько раз с врагами, и теперь внезапно ничего не происходит.Аргументы находятся в функциях Flip и Flipper, но я оставил здесь все остальное, так как вы видите другой аргумент, который может предотвращать переворот.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class dragoonDetection : MonoBehaviour {
private Rigidbody2D rb;
private Animator anim;
[HideInInspector]
public bool flight;
[HideInInspector]
public regDragon detector;
public float flightHeight;
public float flightDistance;
private bool facingRight = true;
private bool state1;
public float changeTimer = 0f;
public float changeDelay = 0.5f;
public float attackTimer = 0;
public float attackDelay = 1f;
public float speed = 1f;
public Transform Player;
void Start ()
{
rb = GetComponent<Rigidbody2D> ();
anim = GetComponent<Animator> ();
}
void Update()
{
Detected ();
ChangeTimes ();
StateChanger ();
Flip ();
}
void Flipper()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
void Flip()
{
if (facingRight && Input.GetKeyDown (KeyCode.LeftArrow)) {
Flipper ();
Debug.Log ("left");
}
if (!facingRight && Input.GetKeyDown (KeyCode.RightArrow)) {
Flipper ();
Debug.Log ("right");
}
}
void Detected()
{
if (detector == null) {
return;
} else
{
if (detector.detected) {
flight = true;
anim.SetTrigger ("flight");
rb.velocity = new Vector2 (rb.velocity.x, flightHeight);
changeDelay -= Time.deltaTime;
}
}
}
void ChangeTimes ()
{
if (changeDelay <= 0 && flight) {
state1 = true;
}
}
void StateChanger ()
{
if (state1) {
flightHeight = 0f;
}
}
void OnTriggerEnter2D (Collider2D other)
{
if (other.gameObject.tag == ("arrow")) {
flight = true;
anim.SetTrigger ("flight");
}
}
}