ИИ персонаж не меняет направление шкалы в игре параллакс - PullRequest
0 голосов
/ 06 марта 2019

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

Однако при перемещении персонажа игрока происходит нечто очень странное.Теперь этот игрок не находится в параллаксирующих слоях, он лежит вне его, чтобы двигаться свободно, как и должно.К нему также прикреплен скрипт, позволяющий камере следить за игроком.Что странно, если игрок находится достаточно близко и бежит в том же направлении, что и случайный игрок, и этот случайный игрок касается координаты, в которой он должен повернуть направление весов в обратном направлении.Это происходит только при включенном скрипте параллакса и слежения за камерой, отключение слежения за камерой, очевидно, отключает параллакс, и случайный проигрыватель работает, как и ожидалось.

Что заставляет случайного игрока отказываться менять направление шкалы, когда активны параллакс и слежение за камерой?Примечание: я не уверен, нужно ли мне публиковать свои сценарии для всех трех компонентов, поэтому сейчас я просто опубликую свой сценарий перемещения случайного игрока.

  using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;

public class MSWalkLR : MonoBehaviour
{
    private bool dirRight = true;
    private float speed = 5.0f;
    Vector3 localScale;
    Animator anim1;
    public GameObject MS;

    // Start is called before the first frame update
    void Start()
    {
        anim1 = GetComponent<Animator>();
        localScale = MS.transform.localScale;
        localScale.x *= -1;
        MS.transform.localScale = localScale;
        anim1.SetBool("isWalking", true);
    }

    // Update is called once per frame
    void Update()
    {
        if (dirRight)
        {
            MS.transform.Translate(Vector2.right * speed * Time.deltaTime);
        }
        else
        {
            MS.transform.Translate(-Vector2.right * speed * Time.deltaTime);
        }

    if (MS.transform.position.x <= -26.0f)
    {
        localScale.x *= -1;
        MS.transform.localScale = localScale;
        dirRight = true;
        anim1.SetBool("isWalking", true);
    }

    if (transform.position.x >= 21.0f)
    {
        localScale.x *= -1;
        MS.transform.localScale = localScale;
        dirRight = false;
        anim1.SetBool("isWalking", true);
    }

    }


}

ОБНОВЛЕНИЕ: похоже, когда моя камера достигает целичто это должно перестать следовать за игроком, это происходит.По сути, моя камера перестанет следовать за игроком, скажем, x 22, и, если я продолжу перемещать своего персонажа, когда камера остановлена ​​вне поля зрения камеры, эта проблема возникает, когда масштаб не меняется на противоположный.

...