Страница 1 из 1

Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 19:53
Ozzzy
Здравствуйте ув. Пользователи форума!

У меня небольшая проблема: Я обычным путём привязал камеру к персонажу. (перетащил камеру на персонажа)
При его движении, камера передвигается, но тянет за собой все объекты сцены, и создаётся иллюзия, что игровой персонаж тупо бежит на месте.
Помогите пожалуйста.
P.S: С помощью скриптов такая же фигня.

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:03
Valerich
Камера тащит с собой что то, если это сделано намеренно, если на персонаже камера то другие объекты тут не могут быть, те что не на камере и не на персонаже. Может вы что то упустили?
Есть скрипты(Camera2d follow ) c слежением камеры за персонажем, там все работает нормально.

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:09
Ozzzy
Valerich писал(а):Камера тащит с собой что то, если это сделано намеренно, если на персонаже камера то другие объекты тут не могут быть, те что не на камере и не на персонаже. Может вы что то упустили?

Да вроде ничего не упустил. Хотя если не так, то значит всё-таки я что-то напортачил.
Изображение
Изображение

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:17
Valerich
Нет тут не надо камеру в персонаж вкладывать.
Попробуйте ради примера
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class CameraFollow2D : MonoBehaviour {

        public float damping = 1.5f;
        public Vector2 offset = new Vector2(2f, 1f);
        public bool faceLeft;
        private Transform player;
        private int lastX;

        void Start ()
        {
                offset = new Vector2(Mathf.Abs(offset.x), offset.y);
                FindPlayer(faceLeft);
        }

        public void FindPlayer(bool playerFaceLeft)
        {
                player = GameObject.FindGameObjectWithTag("Player").transform;
                lastX = Mathf.RoundToInt(player.position.x);
                if(playerFaceLeft)
                {
                        transform.position = new Vector3(player.position.x - offset.x, player.position.y + offset.y, transform.position.z);
                }
                else
                {
                        transform.position = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
                }
        }

        void Update ()
        {
                if(player)
                {
                        int currentX = Mathf.RoundToInt(player.position.x);
                        if(currentX > lastX) faceLeft = false; else if(currentX < lastX) faceLeft = true;
                        lastX = Mathf.RoundToInt(player.position.x);

                        Vector3 target;
                        if(faceLeft)
                        {
                                target = new Vector3(player.position.x - offset.x, player.position.y + offset.y, transform.position.z);
                        }
                        else
                        {
                                target = new Vector3(player.position.x + offset.x, player.position.y + offset.y, transform.position.z);
                        }
                        Vector3 currentPosition = Vector3.Lerp(transform.position, target, damping * Time.deltaTime);
                        transform.position = currentPosition;
                }
        }
}
 

Тег выставьте "Player" своему Character. Скрипт на камеру.

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:21
Ozzzy
Valerich писал(а):Нет тут не надо камеру в персонаж вкладывать.
Попробуйте ради примера
Тег выставьте "Player" своему Character. Скрипт на камеру.

Точно такой же скрипт использовал уже - такая же фигня была
Сейчас попробую ещё раз.

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:23
Valerich
Нет :) У меня все так же, и работает как часики...
Странно...Камеру убрали из Character-a?

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:24
Ozzzy
Valerich, всё равно тоже самое, только в добавок персонаж дёргается :-?

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:36
Valerich
Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 20:40
Ozzzy
Valerich писал(а):Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?

Сейчас видео выложу, может чего да и увидите
( Через 15 мин будет готово. )

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 21:13
Ozzzy
Valerich писал(а):Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?

Вотс
https://youtu.be/pnRUCS4SbtU

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 21 июл 2017, 21:43
Valerich
Ну вот как в самом начале это устроено, это нормально, мишка двигается, там мне кажется для прыжка будет Gravity Scale 20 многовато учитывая сам прыжок а скрипт там есть.Даже не знаю чего еще и сказать...
Может, samana придет, чего подскажет, так как он помнит этого медведя :)

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 22 июл 2017, 01:53
BFZ
Дак вы же все объекты сцены с помощью UI сделали. Камера двигается - двигается и весь ui за ней

пи.си. У канваса можно выбрать рендер мод: ворлд спейс, чтобы он не двигался за камерой

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 22 июл 2017, 04:54
Valerich
Можно вложить в Сanvas камеру там где Renderer Camera. И все элементы будут в рамке видимости камеры.(как у вас скорее всего) Там и все ваши ui будут, но можно и без ui и вообще без канваса Например делать и все будет прекрасно. (Так многие делали раньше и все нормально, сам знаю товарища, который делал платформер без всяких ui, тогда когда их еще не было )Это не суть. Как вы сделаете.
:ymparty:
1) Двигается только мишка, он управляется тем скриптом тапа и прыжка как я понял из видео.
2)Камера не всунутая никуда на ней скрипт у которого логика только следовать за мишкой.
3)В сцене двигается только мишка, камера за ним следует, а все игровые объекты расположены в сцене, c фоном например находиться дочерним в камере.

Re: Почему за камерой следует вся игровая 2d сцена?

СообщениеДобавлено: 26 июл 2017, 18:31
Ozzzy
Всё, понял в чём причина. Спасибо огромное всем! :-*