Ответы пользователя по тегу Unity
  • Как заспавнить любое кол-во объектов по прифабу?

    @Farawa
    [SerializedField] private GameObject prefab;
    
    Start()
    {
    var rand = UnityEngine.Random.Range(5,50);
    for(int i=0;i<rand;i++)
    {
        GameObject go = Instantiate(prefab);
    }
    }
    Ответ написан
    Комментировать
  • Как соединить все дочерние объекты компонентом Fixed Joint?

    @Farawa
    private void JoinChildrens()
    {
    var rig = GetComponent();
    for(int i = 0; i < transform.childCount; i++)
    {
    var fix = transform.GetChild(i).gameObject.AddComponent();
    fix.connectedBody = rig;
    }
    }
    Ответ написан
  • Как поменять параметры Pos x и Pos y в RectTransform в Unity2D?

    @Farawa
    (transform as recttransform).anchoredposition = vector3.zero;
    Ответ написан
    Комментировать
  • Как сделать режим полёта камеры?

    @Farawa
    Можешь использовать cinemachine, там 1 из режимов как раз для первого лица, так же можно использовать quaternion.rotate. ещё чтобы двигаться по направлению куда смотришь используй transform.forward, так же .right, .up, чтобы двигаться в противоположном направлении, добавь минус
    Ответ написан
    Комментировать
  • Поможете с mesh-ами и всем вытекающим?

    @Farawa
    в общем это сделать довольно сложно, либо купи/скачай ассет на деформацию, либо используй подмену модели.
    объяснить могу: для повышения полигонов нужно закинуть модель в блендер и применить модификатор subdivision surface, далее тебе нужно деформировать модель, для чего нужен радиус взрыва, далее определяем какие модели попали под радиус, далее берем меш этого объекта и проверяем попала ли каждая точка в радиус взрыва (на твое усмотрение либо выбрать все попавшиеся, либо только самые близкие на пути луча от взрыва), дальше нужно их сместить от взрыва и, в идеале, нужно расчитать физическую вязкость материала (чтобы не просто кусок меша подвинулся а именно деформировалось), сделать расчет деформации, применить меш, только меняй меш не тот, который в meshrenderer лежит, а копируй его, меняй и вставляй копию, а то исходный поменяешь. как то так, удачи, не советую таким заниматься если опыта в программировании нет, я пытался сделать подобное около пару месяцев, выходило в принципе не плохо по деформациям, но производительность оставляла желать лучшего.
    Ответ написан
    Комментировать
  • Есть ли слои у Particle System?

    @Farawa
    из простого видимо никак, потому что партиклы находятся в мире, но если у тебя 2д приложение, можешь по z оси подвинуть ближе к камере. а сложный вариант это сделать еще одну камеру, которая будет видеть только партиклы и воспроизводить картинку с нее поверх основной камеры, как сделать - ищи сам
    Ответ написан
    Комментировать
  • Не работает Mathf.Clamp. Что я не так сделал?

    @Farawa
    потому что из GetAxis прилетает не какие-то углы на сколько мышка повернута от какого-то начального положения, а динамически, то есть если мышку не трогать, то значение 0, если сильно дернуть, то макс до 10 дойдет примерно. так что все работает, только использовать надо правильно
    Ответ написан
    Комментировать
  • Нужно ли в Awake назначать поля?

    @Farawa
    можно и так, и так, зависит от ситуации, например если так сделают 5-10 объектов, то ничего страшного, а если 100+, то лучше сделать префаб и указать в нем через [sf]
    Ответ написан
    Комментировать
  • Падает фпс с 60 до 15 после 3х минут игры?

    @Farawa
    видимо где-то бесконечно заполняется какой-то List, скорее всего, и через несколько минут он слишком большой и его сложно пересоздавать для добавления новых переменных. а так в юнити профайлером воспользуйся, там покажет в каком скрипте проблема
    Ответ написан
  • Не отображаются тестовые баннеры и реклама за награду AdMod unity на телефоне?

    @Farawa
    потому что для этого нужно выложить игру в плей маркет и настроить платежные данные и тд
    Ответ написан
  • Как сделать селективное меню в редакторе?

    @Farawa
    используй enum
    61925faaa200e432589546.png
    61926045f3f66082781819.png
    Ответ написан
    Комментировать
  • Как крутить сферу джойстиком:?

    @Farawa
    берешь джойстик из ассет шопа, он тебе будет передавать x и y значения от -1 до 1.
    далее берешь и вращаешь шар через x и z.
    примерный код:
    Vector2 input = joystick.input;
                Transform sphere = sphereObject;
                float rotateSpeed = 10;
    
                var euler = sphere.eulerAngles;
                euler.x += input.x * rotateSpeed;
                euler.z += input.y * rotateSpeed;
                sphere.eulerAngles = euler;
    Ответ написан
    Комментировать
  • Вращение Объекта по оси Y идентично другому объекту?

    @Farawa
    как вариант могу предложить в апдейте дочернего объекта вычитать x и y оси вращения родительского
    Ответ написан
    Комментировать
  • Почему не изменяется переменная в скрипте?

    @Farawa
    в вашем коде расписано так, как будто Route у каждого врага свой и исходя из этого могу предложить такую реализацию:
    [SerializeField] private Queue<GameObject> points;
    
        public Vector2 GetTargetPosition()
        {
            if (points.Count == 0)
            {
                //destroy;
            }
            var point = points.Dequeue();
            return point.transform.position;
        }

    получается у врага нужно прописать:
    если достиг точки, то запросить следующую.
    не проверял, но должно работать.
    Ответ написан
    Комментировать
  • Как сделать лазер в Unity?

    @Farawa
    тебе понадобится 2 вещи: Physics.Raycast и компонент LineRenderer.

    public class Laser : MonoBehaviour
    {
        [SerializeField] private LineRenderer lineRenderer;
    
        private void Update()
        {
            //Ray ray = new Ray(origin,direction);
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                lineRenderer.enabled = true;
                var firstPosition = Camera.main.transform.position;
                var secondPosition = hit.point;
                lineRenderer.SetPosition(0, firstPosition);
                lineRenderer.SetPosition(1, secondPosition);
            }
            else
            {
                lineRenderer.enabled = false;
            }
        }
    }

    6141adf5a61a8592586606.png6141ae1d6ad74507132609.png
    у LineRenderer есть материалы, можешь создать материал и закинуть туда и будет цвет какой хочешь
    Ответ написан