Единство, как остановить движущиеся объекты с камерой - PullRequest
0 голосов
/ 05 января 2019

Мне нужна помощь с движением камеры касанием. У меня легкая 2d игра. Я добавил фон как спрайт, он работает нормально. Но когда я добавляю какое-то изображение на этот фон, оно не движется вместе с камерой. Когда я добавляю спрайт вместо изображения, он перемещается с фоном, так что все в порядке. Но какая разница, как я могу настроить изображение, чтобы оно не двигалось, когда камера движется? А как настроить некоторые спрайты для перемещения с камерой? надеюсь, это понятно :) спасибо

Мой скрипт для перемещения фона выглядит следующим образом, но, вероятно, это должны быть только некоторые настройки компонента Unity ...

using UnityEngine;
using UnityEngine.EventSystems;

public class TouchController : MonoBehaviour
{
    float touchStart = 0f;
    Vector3 cameraDestination;
    public float cameraSpeed = 0.1f;
    public float maxPosX = 2900f;
    public float minPosX = -2900f;
    public bool DragUI = false;

    public static bool IsPointerOverGameObject()
    {
        if (EventSystem.current.IsPointerOverGameObject())
            return true;

        if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
        {
            if (EventSystem.current.IsPointerOverGameObject(Input.touches[0].fingerId))
                return true;
        }
        return false;
    }
    void Start()
    {
        cameraDestination = Camera.main.transform.position;
    }
    void Update()
    {

        // Check if the mouse was clicked over a UI element
        if (IsPointerOverGameObject() && Input.GetMouseButtonDown(0))
        {
            Debug.Log("Clicked on the UI");
            DragUI = true;
        }
        if (Input.GetMouseButtonDown(0))
        {
            touchStart = Input.mousePosition.x;
        }
        if (Input.GetMouseButtonUp(0))
        {
            float delta = Input.mousePosition.x - touchStart;
            if (delta < -50f && !DragUI)
            {
                if (cameraDestination.x < maxPosX)
                {
                    cameraDestination = new Vector3(Camera.main.transform.position.x + 1600,
                    Camera.main.transform.position.y, Camera.main.transform.position.z);
                    // move the camera right
                    Debug.Log(cameraDestination.x + " cam dest x right");

                }
            }
            else if (delta > 50f && !DragUI)
            {
                if (cameraDestination.x > minPosX)
                {
                    cameraDestination = new Vector3(Camera.main.transform.position.x - 1600,
                    Camera.main.transform.position.y, Camera.main.transform.position.z);
                    Debug.Log(cameraDestination.x + " cam dest x left");
                }
            }
            else { DragUI = false;}
        }
        if (Vector3.Distance(Camera.main.transform.position, cameraDestination) > 0.1f && !DragUI)
        {
            if (Camera.main.transform.position.x > cameraDestination.x)
            {
                Camera.main.transform.position = new Vector3(Camera.main.transform.position.x - cameraSpeed,
                    Camera.main.transform.position.y, Camera.main.transform.position.z);
                DragUI = false;
            }
            else
            {
                Camera.main.transform.position = new Vector3(Camera.main.transform.position.x + cameraSpeed,
                    Camera.main.transform.position.y, Camera.main.transform.position.z);
                DragUI = false;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...