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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение Ozzzy 21 июл 2017, 19:53

Здравствуйте ув. Пользователи форума!

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

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

Сообщение Valerich 21 июл 2017, 20:03

Камера тащит с собой что то, если это сделано намеренно, если на персонаже камера то другие объекты тут не могут быть, те что не на камере и не на персонаже. Может вы что то упустили?
Есть скрипты(Camera2d follow ) c слежением камеры за персонажем, там все работает нормально.
Последний раз редактировалось Valerich 21 июл 2017, 20:34, всего редактировалось 1 раз.
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

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

Сообщение Ozzzy 21 июл 2017, 20:09

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

Да вроде ничего не упустил. Хотя если не так, то значит всё-таки я что-то напортачил.
Изображение
Изображение
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03

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

Сообщение Valerich 21 июл 2017, 20:17

Нет тут не надо камеру в персонаж вкладывать.
Попробуйте ради примера
Синтаксис:
Используется 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. Скрипт на камеру.
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

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

Сообщение Ozzzy 21 июл 2017, 20:21

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

Точно такой же скрипт использовал уже - такая же фигня была
Сейчас попробую ещё раз.
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03

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

Сообщение Valerich 21 июл 2017, 20:23

Нет :) У меня все так же, и работает как часики...
Странно...Камеру убрали из Character-a?
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

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

Сообщение Ozzzy 21 июл 2017, 20:24

Valerich, всё равно тоже самое, только в добавок персонаж дёргается :-?
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03

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

Сообщение Valerich 21 июл 2017, 20:36

Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

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

Сообщение Ozzzy 21 июл 2017, 20:40

Valerich писал(а):Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?

Сейчас видео выложу, может чего да и увидите
( Через 15 мин будет готово. )
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03

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

Сообщение Ozzzy 21 июл 2017, 21:13

Valerich писал(а):Ну то что дергается персонаж это уже от персонажа, код камеры который за ним, тут не причем. Может с персонажем чего?

Вотс
https://youtu.be/pnRUCS4SbtU
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03

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

Сообщение Valerich 21 июл 2017, 21:43

Ну вот как в самом начале это устроено, это нормально, мишка двигается, там мне кажется для прыжка будет Gravity Scale 20 многовато учитывая сам прыжок а скрипт там есть.Даже не знаю чего еще и сказать...
Может, samana придет, чего подскажет, так как он помнит этого медведя :)
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

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

Сообщение BFZ 22 июл 2017, 01:53

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

пи.си. У канваса можно выбрать рендер мод: ворлд спейс, чтобы он не двигался за камерой
BFZ
UNITрон
 
Сообщения: 252
Зарегистрирован: 28 июн 2017, 02:16

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

Сообщение Valerich 22 июл 2017, 04:54

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

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

Сообщение Ozzzy 26 июл 2017, 18:31

Всё, понял в чём причина. Спасибо огромное всем! :-*
Ozzzy
UNец
 
Сообщения: 29
Зарегистрирован: 08 июл 2017, 20:03


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 31