почему мой простой аргумент, который по какой-то причине не отвечает? (2D) - PullRequest
0 голосов
/ 15 мая 2018

У меня есть двухмерный спрайт, который я просто пытаюсь перевернуть по оси 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");
    }
}
}

1 Ответ

0 голосов
/ 16 мая 2018

Я понял это. Что-то было не так с самой анимацией. ИДК, как это случилось, потому что это тоже было хорошо. Не было никаких дополнительных параметров или определенных мест, где проходила анимация. Но я вставил спрайты и теперь работает нормально. Мое Unity в последнее время совершало случайные акты, когда вещи, которые работали нормально всегда, внезапно начали бунтовать без причины (у меня было 5 уже некоторое время). Но это нормально. Спасибо всем за ваши два цента.

...