Проблема с аниматором

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Проблема с аниматором

Сообщение harrypanot 17 ноя 2019, 23:58

Приветствую! Есть скрипт меняющий значение bool в аниматоре, он находится на объекте в префабе . Когда на сцене появляется несколько этих префабов, большая часть скриптов (на одном всегда работает как часы) перестает изменять значение bool в аниматоре. Подскажите, пожалуйста, как исправить?

Полный код:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TriggerSliderFront : MonoBehaviour {
    public GameObject UIGENERATOR;
    public GameObject Generator1;
    public GameObject Player1;
    public GameObject generatoridle;
    public GameObject Sound1;
    public Transform gentrans;
    public AudioClip[] impact;
    public AudioSource audioSource;
    public Slider Slider;
    public Rigidbody Rig;
    public Animator panim;
    bool istrigger = false;
    bool ispressed = false;

    private void Start()
    {
        UIGENERATOR.SetActive(false);
        Sound1.SetActive(false);

            Player1 = GameObject.FindWithTag("Player");
            Rig = Player1.GetComponent<Rigidbody>();
            panim = Player1.GetComponent<Animator>();
    }

    private void Update()
    {

        if (Input.GetKeyDown(KeyCode.Mouse0) & istrigger == true)
        {
            ispressed = true;
        }

        if (Input.GetKeyUp(KeyCode.Mouse0) || istrigger == false)
        {
            ispressed = false;
            panim.SetBool("Repair", false);
        }

        if (ispressed == true)
        {
            Slider.value = Slider.value + Time.deltaTime * 0.05f;
            panim.SetBool("Repair", true);
            Player1.transform.position = new Vector3(gentrans.position.x, gentrans.position.y, gentrans.position.z);
            Player1.transform.rotation = Quaternion.Euler(gentrans.transform.rotation.x, gentrans.transform.rotation.y + 180, gentrans.transform.rotation.z);

            if (!audioSource.isPlaying)
            {
                audioSource.PlayOneShot(impact[Random.Range(0, impact.Length)], 10F);
            }
        }

        if (Slider.value >=1)
        {
            UIGENERATOR.SetActive(false);
            panim.SetBool("Repair", false);
            generatoridle.GetComponent<Animator>().SetBool("aktiv", true);
            Sound1.SetActive(true);
            Destroy(Generator1);
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
       //     Debug.Log("В триггере");
            UIGENERATOR.SetActive(true);
            istrigger = true;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.tag == "Player")
        {
            UIGENERATOR.SetActive(false);
            istrigger = false;
        }
    }
}
 


И второй вопрос касательно:
Синтаксис:
Используется csharp
Player1.transform.rotation = Quaternion.Euler(gentrans.transform.rotation.x, gentrans.transform.rotation.y + 180, gentrans.transform.rotation.z);
 

Объект gentrans имеет заданные параметры rotation, но персонаж их не перенимает, изменяется только координата y и только при указании значения (соответственно 180). Пробовал создать объект на основной сцене и получать его rotate через find и тем же путем далее, то же самое, как быть? Хотелось бы вычислять относительно самого объекта в префабе. (lookat тоже пробовал даже с мировыми координатами типа vector3.left - бесполезно)

Благодарю за помощь, буду ждать ваших ответов! :)

P.S. Ну и ваши корректировочки относительно оптимизации кода выслушаю с радостью!
harrypanot
UNец
 
Сообщения: 3
Зарегистрирован: 17 ноя 2019, 23:45

Re: Проблема с аниматором

Сообщение jetyb 18 ноя 2019, 00:58

Предположу что здесь
Player1 = GameObject.FindWithTag("Player");

Все скрипты находят один и тот же объект (среди mногих) и изmеняют только его.
Собственно из-за этого m.б. проблеmы с rotation.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Проблема с аниматором

Сообщение harrypanot 18 ноя 2019, 17:39

Так мне и нужно, чтобы при взаимодействии с одним из этих объектов они включали анимацию игрока проигрывающую взаимодействие с объектом.
harrypanot
UNец
 
Сообщения: 3
Зарегистрирован: 17 ноя 2019, 23:45

Re: Проблема с аниматором

Сообщение seaman 18 ноя 2019, 20:11

Оператор `and` пишется не так &, а так &&
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Проблема с аниматором

Сообщение harrypanot 19 ноя 2019, 16:22

Верно подмечено! Но как-никак функция все равно срабатывает, значит с аниматором траблы не из-за этого...
harrypanot
UNец
 
Сообщения: 3
Зарегистрирован: 17 ноя 2019, 23:45

Re: Проблема с аниматором

Сообщение seaman 19 ноя 2019, 22:48

Ну тогда надо расставить дебаги и показать - что срабатывает, что - нет.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot], Google [Bot], Yandex [Bot] и гости: 22