• Как понять что велосити имеет то же направление что и вектор объекта примерно?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Если нужно просто узнать совпадает ли направление векторов, то можно использовать Vector3.Dot. Если нужны градусы, то для этого есть Vector3.Angle.
    Ответ написан
    Комментировать
  • Причуды Unity3D или GFX.WaitForPresent?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    gfx.waitforpersent - и подобные вызовы в профаилере всего лишь указывают, что проц или видео ожидают видео или проц (соответственно).
    Тоесть что-то является узким местом и не дает на полную работать.
    В Вашем случае видимо видеокарточка успевала бы быстрее отрисовывать, но проц чем-то занят и не отдает так часто на отрисовку данные. Выключив скрипт с волнами - сняли вычисления с проца видимо..и стало больше кадров.
    Ну и тут как бы очевидно что вычислений у вас в Апдеите - многовато. столько умножений.. и каждый кадр. и на каждую вершину меша, небось и не самого простого..
    Ответ написан
    2 комментария
  • На чем и как пишутся протоколы?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    На бумаге.
    Ответ написан
    Комментировать
  • Как сделать подбор предметов Unity?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Несколько замечаний, во-первых, нет нужды создавать отдельный вектор для положения мышки, можно сразу передавать Input.mousePosition. Во-вторых, по умолчанию maxDistance у Physics.Raycast это float.PositiveInfinity, ваш Mathf.Infinity можно убрать. В-третьих, для проверки тэгов лучше использовать CompareTag, он работает чуть быстрее.
    using UnityEngine;
    
    public class RaycastExample : MonoBehaviour
    {
        private void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    if (hit.transform.CompareTag("PickUp"))
                    {
                        Destroy(hit.transform.gameObject);
                    }
                }
            }
        }
    }

    Касаемо вашей проблемы, я бы предложил вам подключиться дебаггером и проверить, что рейкасты попадают в объект, возможно, у вас слишком маленький коллайдер и луч банально по нему не попадает. Если это так, то вам надо либо увеличить коллайдер, либо использовать Physics.SphereCast.
    Ответ написан
    Комментировать
  • Лучшие видео-туториалы по Unity3D на youtube на ваш взгляд?

    @GreatRash
    Brakeys - один из лучших каналов
    Sebastian Lague - отличные туториалы от и до
    Maki'n Stuff Look Good - уроки не для новичков, парень воспроизводит в Unity эффекты из различных игр

    Не Youtube, но наверное самый крутой сайт по обучению Unity. Уроки от простейших, до мега-продвинутых. Глубокое погружение во все аспекты разработки под Unity - официальные туториалы курят в сторонке.
    Ответ написан
    1 комментарий
  • Вращение камеры вокруг объекта свайпом в Unity3D?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Очень надеюсь что про сваип в гугл вы тоже найдете, там вроде все просто.

    А вот по инерции принцип подскажу.
    По сути в таче(и в курсоре мышки) есть дельта https://docs.unity3d.com/ScriptReference/Touch-del...
    По сути - на сколько сместилась за кадр (если на апдеите считываете)
    Так вот можно просто дельту, можно за несколько кадров усредненную (как кому больше нравится) - запомнить.

    Вот эта запомненная дельта и будет мерой инертности) И по сути вам нужно просто продолжать на апдеите применять такую жу дельту к вращению и потихоньку её уменьшать (банально в том же апдеите множить на что то меньшее и близкое к единице, какие нибудь 0,97)

    Собственно множитель и будет мерой инертности)

    //////////
    	                    Vector2 position = UnifiedInput.position();
    	                    dLong = -position.x * longitudeSensivity;
    	                    dLat = position.y * latitudeSensivity;
    
    	                    velocity += new Vector2(dLat, dLong);
    	           
    	                //      Also implement tap controls
    
    	                if (velocity.sqrMagnitude > boundary * boundary)
    	                {
    	                    float dt = Time.deltaTime;
    
    	                    Vector2 prevVelocity = velocity;
    	                    velocity -= dt * damping * velocity;
    	                    if (Vector2.Dot(velocity, prevVelocity) <= 0)
    	                        velocity = Vector2.zero;
    
    	                    latitude += dt * velocity.x;
    	                    longitude += dt * velocity.y;
    
    	                    latitude = Mathf.Clamp(latitude, 0 + boundary, Mathf.PI - boundary);
    	                    longitude = Mathf.Repeat(longitude, 2 * Mathf.PI);
    
    	                    relativePosition = SphericalToCartesian(longitude, latitude, orbitRadius);
    	                }
    	              
    	                this.transform.position = this.realTarget.transform.position + this.relativePosition;
                    	this.transform.LookAt(this.realTarget.transform);
    
    ///////
    private Vector3 SphericalToCartesian(float longitude, float latitude, float radius)
        {
            float x = radius * Mathf.Sin(latitude) * Mathf.Cos(longitude);
            float y = radius * Mathf.Cos(latitude);
            float z = radius * Mathf.Sin(latitude) * Mathf.Sin(longitude);
            return new Vector3(x, y, z);
        }
    Ответ написан
    3 комментария
  • Почему Canvas в Unity не видит импортированные картинки?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Я просто для прояснения оставлю здесь это.

    TheTalion: это называется не формат изображения, а настроики импорта текстур(просто чтоб люди не путались)

    Канвас работает с спраитами, для этого вам правильно советуют выбрать настроики импорта для текстуры корректные.

    Ну и так из общего, юнити все текстуры, какой формат ей не "скармливай"(хоть psd , хоть tga, хоть jpeg), хранит в своем формате текстур, зависящем от настроек импорта.
    Ответ написан
    Комментировать