• Проблема с Всплывающим окном в игре (Некий DebugHUB)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Вы правы условия были написаны неверно, и поэтому был бардак с всплыванием сообщения, Спасибо за ответ!
  • Как заставить персонажа следить (поворачиваться) в сторону мышки?

    BRO_TIGER
    @BRO_TIGER
    Тэг на камере какой? Если тэг другой то измените её на MainCamera надеюсь вы знаете как менять тег
  • Как удалить объект из иерархии с помощью луча?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    1) У меня пока что две Камеры (Позже, возможно сделаю одну камеру, а так работает).
    2) Без Rigidbody не работает, не знаю что за странность... (Может всё изменилось если говорите что это было давно).
  • Как удалить объект из иерархии с помощью луча?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Спасибо! Это то что мне нужно было!) Конечно пришлось поработать со скриптами и добавить ещё один, но этот метод работает как надо!)
  • Как удалить объект из иерархии с помощью луча?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Denis Gaydak: Мда, вариантов как всегда много, но дело в том что есть у меня в проекте сцена где можно отредактировать свой корабль (С нуля собрать его т.к. это некое "Ноу-хау"). Строительная система менялась в процессе разработки и я думал как сделать лучше ведь когда что-то добавляешь к примеру "Физику воды", то оно имеет последствие) Раньше было просто если Превью Объект входил в триггер "Детали", то он удалял только ту деталь в которой находится Превью Объект (Решение прошлой проблемы, если помните). Сейчас я сделал так чтобы Превью Объект отталкивался от коллайдера детали и теперь нужда в скрипте пропала т.к. Превью Объект не входит в триггер детали... Мне нужно сделать удаление с помощью курсора мыши т.е. когда наводишь курсор на деталь которую нужно удалить (Через Raycast)... Да, наверное всё объяснил... Щас работаю над вашими вариантами, может что-то подойдет или самому идея придет)
  • Как удалить объект из иерархии с помощью луча?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Объявлял, просто забыл добавить в деталях вопроса)
  • Как удалить GameObject и при этом удалить Missing Collider из Списка?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Спасибо за ответ, но я упростил скрипт и обошёлся без списка массивов!)
  • Как удалить GameObject и при этом удалить Missing Collider из Списка?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Вот Скрипт со списком массивов (Коллайдеров)
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class PreviewObject : MonoBehaviour
    {
    public List col = new List();
    public objectsorts sort;
    public Material green;
    public Material red;
    public bool IsBuildable;
    public bool IsDetail;

    public bool second;

    public PreviewObject childcol;

    public Transform graphics;

    void OnTriggerEnter(Collider other)
    {
    if (other.gameObject.layer == 9)// && foundation)
    col.Add(other);
    }

    void OnTriggerExit(Collider other)
    {
    if (other.gameObject.layer == 9)// && foundation)
    col.Remove(other);
    }

    void Update()
    {
    if (!second)
    changecolor();
    }

    public void changecolor()
    {
    //Debug.Log(childcol.col.Count);
    if (sort == objectsorts.foundation)
    {
    if (col.Count == 0)
    {
    IsDetail = true;
    IsBuildable = true;
    else
    {
    IsDetail = false;
    IsBuildable = false;
    }
    }
    else
    {
    if (col.Count == 0) && childcol.col.Count > 0)
    {
    IsDetail = true;
    IsBuildable = true;
    }
    else
    {
    IsDetail = false;
    IsBuildable = false;
    }
    }

    if (IsBuildable)
    {
    foreach (Transform child in graphics)//this.transform)
    {
    child.GetComponent().material = green;
    }
    }
    else
    {
    foreach (Transform child in graphics)//this.transform)
    {
    child.GetComponent().material = red;
    }
    }

    if (IsDetail)
    {
    foreach (Transform child in graphics)//this.transform)
    {
    child.GetComponent().material = green;
    }
    }
    else
    {
    foreach (Transform child in graphics)//this.transform)
    {
    child.GetComponent().material = red;
    }
    }
    }
    }

    public enum objectsorts
    {
    normal,
    foundation,
    floor
    }
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Немного порыскав в интернете... О, Алелуя! Амереканец в старой Wiki Unity Comunity, сделал тот скрипт который я хотел! Конечно его надо чуть-чуть подправить, Спасибо за помощь что-то долго мы переписывались)))
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    "а что вы пытались сделать этими строчками?"

    Это вращение камеры вокруг цели с помощью трансформации по осям у и х (Долготы и Широты)

    "и почему потом занулили? у вас же при нулях станет в дефолтную так сказать позицию"

    Занулил потому что если этого не сделать то камера будет вращаться с бешеной скоростью и это нельзя будет остановить мышкой а так повернул, мышка остановилась и камера остановилась...

    "последняя строка и заставляет смотреть в центр сферы. всегда.Или я что-то неправильно понимаю и вам надо не всегда смотреть в центр сферы, а отдельно вращать камеру?(но вроде не похожу что я так все перепутал)"


    Да заставляет и при движении камеры, она возвращается в прежнюю позицию, я удалил LookAt из скрипта... Мне нужно чтоб камера вращалась и не входила в саму цель и при этом можно было менять дистанцию (Радиус) до максимальной и минимальной... Но а сейчас она входит в цель...
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Про [ transform.LookAt(target) ]... Да, камера начала смотреть в середину, я просто сомневался добавлять его потому что когда в прошлый раз добавлял - У камеры начались подергивания как будто у неё дискотека)
    Про положение на сфере... А тут и с y ничего нельзя сделать потому что у = дистанции (Радиусу)... Если убрать то тогда камера будет прям в цели... Там походу надо так сделать чтоб дистанция (Радиус) меняла положение по всей сфера примерно так же как у меня было в самом первом скрипте... Но тут надо думать уже самому, Спасибо огромное за поддержку :)

    EDIT: LookAt не то... Это примерно тоже самое что и камеру просто запилить к цели в редакторе, и да z не понадобился, он лишний в данной ситуации (Или нет), вот теперь даже не знаю как радиус выразить чтоб камера в цель не входила (Но тут явно я туплю с утра)...

    (Пришлось данную функцию поместить в конец скрипта и сделать статичный потому что среда-разработки ругалась на локальные функции которые доступны только в 7 версии а в Юнити используется 4 версия)
    public static Vector3 SphericalToCartesian(float longitude, float latitude, float radius)
        {
            float x = radius * Mathf.Sin(latitude) * Mathf.Cos(longitude);
            float y = radius * Mathf.Cos(latitude) * Mathf.Sin(longitude);
    
            return new Vector3(x, y);
        }


    (Где-то тут ошибка, наверное)

    latitude += Input.GetAxis("Mouse X") * xSpeed;
            longitude -= Input.GetAxis("Mouse Y") * ySpeed;
    
            transform.RotateAround(target.position, transform.up, latitude);
            transform.RotateAround(target.position, transform.right, longitude);
    
            longitude = 0;
            latitude = 0;
    
            distance = Vector3.Distance(transform.position, target.position);
            distance = ZoomLimit(distance, zoomMin, zoomMax);
    
            relativePosition = SphericalToCartesian(longitude, latitude, distance);
            position = relativePosition  + target.position;
    
            transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime);
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Я понял про Радианы уже намеком на Долготу и Широту) Но вот только сейчас заметил что надо как-то центр искать у цели потому что камера при запуске фокусируется на косяк цели оси y... Т.е. радиус как дистанция становится от объекта, и почему-то является точкой... Но а так главное что с Трансформацией цели и камеры помогли, а то до сих пор бы сидел и думал изощренный план :)
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Огромное Спасибо! Теперь всё нормально... Конечно пришлось потратить немного времени для того чтобы в скрипт вписать вашу предложенную идею... При передвижении "Воображаемого" кораблика тоже проблем не замечено и это как раз то что я хотел... Ещё раз Спасибо :)
  • Как найти Transform на не Заспавненом Игроке (Процедуральная Карта)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Denis Gaydak "Наблюдатель" - Звено с которого считывается -> Позиция X,Y,Z через Vector2... Определяется он в этом куске скрипта...
    void Update() {
    		viewerPosition = new Vector2 (viewer.position.x, viewer.position.z) / mapGenerator.terrainData.uniformScale;
    
    		if ((viewerPositionOld - viewerPosition).sqrMagnitude > sqrViewerMoveThresholdForChunkUpdate) {
    			viewerPositionOld = viewerPosition;
    			UpdateVisibleChunks ();
    		}
    	}


    Когда игрок уходит на определенное расстояние то те чанки которые ранее загружались - Исчезают
    Вот этот кусок
    void UpdateVisibleChunks() {
    
    		for (int i = 0; i < terrainChunksVisibleLastUpdate.Count; i++) {
    			terrainChunksVisibleLastUpdate [i].SetVisible (false);
    		}
    		terrainChunksVisibleLastUpdate.Clear ();
    			
    		int currentChunkCoordX = Mathf.RoundToInt (viewerPosition.x / chunkSize);
    		int currentChunkCoordY = Mathf.RoundToInt (viewerPosition.y / chunkSize);
    
    		for (int yOffset = -chunksVisibleInViewDst; yOffset <= chunksVisibleInViewDst; yOffset++) {
    			for (int xOffset = -chunksVisibleInViewDst; xOffset <= chunksVisibleInViewDst; xOffset++) {
    				Vector2 viewedChunkCoord = new Vector2 (currentChunkCoordX + xOffset, currentChunkCoordY + yOffset);
    
    				if (terrainChunkDictionary.ContainsKey (viewedChunkCoord)) {
    					terrainChunkDictionary [viewedChunkCoord].UpdateTerrainChunk ();
    				} else {
    					terrainChunkDictionary.Add (viewedChunkCoord, new TerrainChunk (viewedChunkCoord, chunkSize, detailLevels, transform, mapMaterial));
    				}
    
    			}
    		}
    	}


    Дальше идёт класс самого Чанка, но там уже ничего особого так как "Наблюдателя" я не упоминал...
    А вот тут обновление чанка, вот тут тоже кусок оставлю:
    public void UpdateTerrainChunk() {
    			if (mapDataReceived) {
    				float viewerDstFromNearestEdge = Mathf.Sqrt (bounds.SqrDistance (viewerPosition));
    				bool visible = viewerDstFromNearestEdge <= maxViewDst;
    
    				if (visible) {
    					int lodIndex = 0;
    
    					for (int i = 0; i < detailLevels.Length - 1; i++) {
    						if (viewerDstFromNearestEdge > detailLevels [i].visibleDstThreshold) {
    							lodIndex = i + 1;
    						} else {
    							break;
    						}
    					}
    
    					if (lodIndex != previousLODIndex) {
    						LODMesh lodMesh = lodMeshes [lodIndex];
    						if (lodMesh.hasMesh) {
    							previousLODIndex = lodIndex;
    							meshFilter.mesh = lodMesh.mesh;
    						} else if (!lodMesh.hasRequestedMesh) {
    							lodMesh.RequestMesh (mapData);
    						}
    					}
    
    					if (lodIndex == 0) {
    						if (collisionLODMesh.hasMesh) {
    							meshCollider.sharedMesh = collisionLODMesh.mesh;
    						} else if (!collisionLODMesh.hasRequestedMesh) {
    							collisionLODMesh.RequestMesh (mapData);
    						}
    					}
    
    					terrainChunksVisibleLastUpdate.Add (this);
    				}
    
    				SetVisible (visible);
    			}
    		}


    Я пытаюсь добавить мультиплеер, но никак не получается связать Генератор со спавном "Наблюдателя". Из-за этого "Наблюдатели" Падают в небытие так как только им дают "Коллайдеры"... Дело в том что UNET изучаю недавно, а хочется не капитально изменить скрипт...
    Извините если есть не до понимания просто проще объяснить никак не могу :)
  • Как найти Transform на не Заспавненом Игроке (Процедуральная Карта)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Denis Gaydak: Написал, EndlessTerrain берёт все ресурсы с 5 Скриптов... Единственное где кроме EndlessTerrain не упоминается это "Наблюдатель". Из-за этого "Наблюдателя" всё и крашится... Проверял скрипты всё в порядке ничего не мешал (Проверял поэтапно т.е. каждый шаг на пути к готовой карте) Можно ли как вариант проделать трюк с получением данных от UNET?
  • Как найти Transform на не Заспавненом Игроке (Процедуральная Карта)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Ну или наоборот если "Наблюдателем" сделать куб то тогда Игрок будет падать в небытие так как куб займёт место игрока...
  • Как найти Transform на не Заспавненом Игроке (Процедуральная Карта)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Да спавнится, но Процедуральный Генератор не может Найти и Определить местоположение "Наблюдателя", поэтому Карта не загружается...
    (Надеюсь понятно объяснил)
  • Как найти Transform на не Заспавненом Игроке (Процедуральная Карта)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Пытался делать и по Тегу поиск и Объекту, но это или не работает, или не может превратить в Transform...
  • Можно ли переделать старую клавиатуру под мобилку?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Вроде пока работает :D
    Спасибо)
  • Можно ли переделать старую клавиатуру под мобилку?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Есть ещё какие нибудь предложения