В настоящее время я работаю над игрой, и вчера я закончил код для случайного движения игроков (не персонажа игрока) в фоновом режиме, чтобы найти только проблему.Код переводит этого игрока, находящегося на том же уровне, что и пол, для работы с эффектом параллакса и должен просто перемещать игрока между диапазонами координат назад и вперед, изменяя направление игрока, когда они достигают конца.Когда игрок находится в режиме просмотра или даже просматривает его с точки зрения сцены и не перемещает персонажа игрока, этот случайный игрок работает, как и ожидалось.
Однако при перемещении персонажа игрока происходит нечто очень странное.Теперь этот игрок не находится в параллаксирующих слоях, он лежит вне его, чтобы двигаться свободно, как и должно.К нему также прикреплен скрипт, позволяющий камере следить за игроком.Что странно, если игрок находится достаточно близко и бежит в том же направлении, что и случайный игрок, и этот случайный игрок касается координаты, в которой он должен повернуть направление весов в обратном направлении.Это происходит только при включенном скрипте параллакса и слежения за камерой, отключение слежения за камерой, очевидно, отключает параллакс, и случайный проигрыватель работает, как и ожидалось.
Что заставляет случайного игрока отказываться менять направление шкалы, когда активны параллакс и слежение за камерой?Примечание: я не уверен, нужно ли мне публиковать свои сценарии для всех трех компонентов, поэтому сейчас я просто опубликую свой сценарий перемещения случайного игрока.
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, и, если я продолжу перемещать своего персонажа, когда камера остановлена вне поля зрения камеры, эта проблема возникает, когда масштаб не меняется на противоположный.