Unity 2D шутер с автоматической прокруткой

#unity3d

#unity3d

Вопрос:

Я создаю 2D шутер с пятислойным фоном с автоматической прокруткой, и у меня возникают проблемы с сохранением объекта player на экране и возможностью управлять им одновременно после того, как я нажал «play» в редакторе.

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

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

Нажатие «play» во всех сценариях приводит к тому, что весь фон очень быстро перемещается влево при просмотре сцены. Если объект игрока отделен от камеры и фона, он остается в поле зрения сцены. Наличие дочернего объекта игрока в качестве камеры или фона заставляет их выхватывать его из вида сцены. Пока камера задает фон, фон всегда виден и работает / прокручивается правильно в режиме просмотра игры.

Я возился с сортировкой слоев, и это, похоже, не влияет на порядок отображения слоев. Я создал слой сортировки для «фона», «проигрывателя» и «камеры» и установил порядок разными способами, но ничего не происходит. Манипулирование каждым объектом в иерархии — это единственное, что, кажется, имеет какой-то эффект.

 using System.Collections;
 

использование системы.Коллекции.Общий;
использование UnityEngine;

общедоступный класс PlayerController: MonoBehaviour { общедоступная скорость воспроизведения с плавающей запятой;

 private Rigidbody2D rb;
private Vector2 leftStickInput;

// Start is called before the first frame update
void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update()
{
    GetPlayerInput();
}

private void GetPlayerInput()
{

    leftStickInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
}

private void FixedUpdate()
{
    Vector2 curMovement = leftStickInput * playerSpeed * Time.deltaTime;

    rb.MovePosition(rb.position   curMovement);
}
 

}

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

public class AutoScroll : MonoBehaviour
{
    public float bGSpeed = -2f;
    Vector2 startpos;
    
    void Start()
    {
        startpos = transform.position;
    }

   
    void Update()
    {
        float newpos = Mathf.Repeat (Time.time * bGSpeed, 5000);
        transform.position = startpos   Vector2.left * newpos;
    }
}


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

public class Parallax : MonoBehaviour
{
    private float length, startpos;
    public GameObject cam;
    public float parallaxEffect;
    
    void Start()
    {
        startpos = transform.position.x;
        length = GetComponent<SpriteRenderer>().bounds.size.x;
    }

    
    void Update()
    {
        float temp = (cam.transform.position.x * (1 - parallaxEffect));
        float dist = (cam.transform.position.x * parallaxEffect);

        transform.position = new Vector3(startpos   dist, transform.position.y, transform.position.z);

        if (temp > startpos   length) startpos  = length;
        else if (temp < startpos - length) startpos -= length;
    }
}

[enter image description here][1]


  [1]: https://i.stack.imgur.com/E0LhS.png
 

Комментарии:

1. Не могли бы вы добавить немного кода к своему вопросу? Также картинка была бы приятной 🙂

2. ГЕСТАС, я только что обновил код и ссылку на изображение. Спасибо за предложение.

3. Я кое-что понял. Я отключил свой код автоматической прокрутки, и проблема решена. Персонаж виден и воспроизводим как на сцене, так и в игре. Единственная проблема в том, что это было бы здорово, если бы все, что я хотел, было статическим фоном. Мне нужен фон для перемещения, так что теперь я должен это выяснить.