Задать вопрос
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    1)rb.MovePosition(rb.position + moveVector * speed * Time.deltaTime) - не даст прыгать(и падать) по время движения , тк прыжок делаем через физику, а это движение через трансформ, но потом вся накопленная сила будет работать
    2) FixedUpdate() может не считывать нажатие клавиши из за того что Input.GetKeyDown(KeyCode.Space) проверятся раз в кадр а FixedUpdate() вызывается раз в 0,02с, при 60 фпс где то 50% что за 0,02с успеет отрисоваться 2 кадра
    3) Constraints - Freeze Position блокирует движение по определенным осям
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Walker : MonoBehaviour
    {
        private Rigidbody2D rb;
        public float speed = 1.5f;
        private Vector2 moveVector;
        public float jumpForce = 5.0f;
    
        void Awake()
        {
            rb = GetComponent<Rigidbody2D>();
        }
        private void Update()
        {
            moveVector = transform.right * Input.GetAxis("Horizontal") * speed;
            if (Input.GetKeyDown(KeyCode.Space))Jump();
        }
        void FixedUpdate()
        {
            if(moveVector.x!=0f)MoveCharacter();
        }
        void MoveCharacter()
        {
            moveVector.y=rb.velocity.y;
            rb.velocity = moveVector;
        }
        void Jump()
        { 
            rb.AddForce(transform.up*jumpForce, ForceMode2D.Impulse);
        }
    
    }

    Все должно работать, вероятно стоят constraints у rb
    66b9a42395837372685488.png
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    чучуть изменим движение
    void MoveCharacter()
     {
         moveVector = transform.right * Input.GetAxis("Horizontal")* speed;
         rb.velocity = new Vector2(moveVector.x, rb.velocity.y);
     }
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    Ali-Muhammad Zakarayayev,
    Ну в Unity если у тебя переменные приватные они не высвечиваются в инспекторе, а значит во время игры ты не можешь их изменять. Так что ставим или public или SerializeField, после прототипирования обычно все это убирается
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    вероятно человек учится и использует public что б задавать параметры в инспекторе.
    И да будет правильнее использовать SerializeField но вопрос не в этом)
    Написано
  • Как сделать чтобы платформа ждала в конечной и стартовой точке заданное время?

    @DrRen7
    kroliczek,
    такого быть не должно
    MoveTowards это изменение вектора 1 в вектор 2 с определенной страстью, есть вариант с
    if(Vector3.Distance(_platform.transform.position,targetPos)>0.1f)

    или можно сделать другой вариант через интерполяцию
    if (reversed) pos -= Time.deltaTime * distance;
    else pos += Time.deltaTime * distance;
    if ((pos < 1f) && (pos > 0f))
    {
        _platform.transform.position = Vector3.Lerp(startPoint.position, endPoint.position, pos);
    }
    else _canMove = false;

    так получается что ты двигаешь от 0 до 1 или наоборот где 0 это значение 1(вектор) а 1 это вектор 2 тогда не надо будет задать новый таргет а просто изменить значение reversed на противоположное
    Написано
  • Игровой объект, на котором есть свойство Rigidbody, очень медленно падает с высоты?

    @DrRen7
    Moskaa,
    direction.Set(Input.GetAxis("Horizontal) * speed,rb.velocity.y,Input.GetAxis("Vertical") * speed);
     rb.velocity=direction;

    AddForce просто добавляет силу условно тот же velocity, если так передвигать персонаж надо делать ограничение в идеале должно получится вот так
    Vector3 movementVector = transform.forward * movementInput.y * CurrentSpeed + transform.right   * movementInput.x * CurrentSpeed;
    
     if (IsGrounded) RB.velocity = Vector3.Lerp(RB.velocity, movementVector, Config.MovementBlendRate);
    else if (Config.AirControl)
    {
    movementVector.y = RB.velocity.y;
    RB.velocity = Vector3.Lerp(RB.velocity, movementVector, Config.MovementBlendRate);
    }
    Написано
  • Как сделать зацикленное проигрывания видео в кликере, когда игрок нажимает кнопку, и когда перестает кликать, плавную остановку видео?

    @DrRen7
    var videoPlayer =  GetComponent<UnityEngine.Video.VideoPlayer>()


    вот не помню, вроде через подключение библиотеки UnityEngine.VideoModule можно следить за статусом VideoPlayer
    Написано
  • Не компилируется код в Unity. Как исправить?

    @DrRen7
    koha0281, ну варианты такие
    1)это ошибка в скрипте он может быть не прикреплен к объекту по этому в инспекторе ошибки не будет
    2)удален какой то из модулей/пакетов
    3)баги среды или юньку
    попробуй создать новый проект и там протестить, на голом можно протестить 3 пункт потом поставить те же Unity Package что и в основном проекте что б избавится от 2 пункта
    Написано
  • Не компилируется код в Unity. Как исправить?

    @DrRen7
    Создается скрипт и нет загрузке. Обычно такое происходит когда в проекте уже есть скрипт что не может скомпилироваться вариант когда название скрипта и класса не совпадают, когда в названии/в скрипте есть не латинские буквы, ну и как вариант повторные/системные названия
    Написано
  • Как исправить error CS1955: Non-invocable member 'Transform.position' cannot be used like a method?

    @DrRen7
    Верно, но судя по контексту вот что нужно
    other.gameObject.transform.position = new Vector3(x, y, z);
    Написано
  • Как можно определить когда игрок находится в темноте, а когда под светом?

    @DrRen7
    Есть ещё вариант с проверкой цветов рядом но будет в разы затратнее.
    А так да самый легкий вариант это триггер на источнике, который вызывает LineCast у перса к источнику и если не доходить то перс в тени
    Написано
  • Почему видеоплеер на unity 2D пропадает?

    @DrRen7
    Сделай скрин канваса и его дочерних объектов
    Написано
  • Ошибка в юнити. Как исправить?

    @DrRen7
    ChangeStory в DialogueStory public ?
    Написано
  • Ошибка со скриптом NullReferenceException. Unity что делать?

    @DrRen7
    попробуй сделать компоненты глобальными и получить их после загрузки сцены
    Skins skins;
            GameObject Store;
            Store = GameObject.FindGameObjectWithTag("MainCamera");
            skins = Store.GetComponent<Skins>();

    можно переписать как
    Skins skins = Camera.main.GetComponent<Skins>();
    а так у тебя подписано в какой строке ошибка, пометь как то в коде тогда мб что ещё заметят
    и название переменных с маленькой буквы стоит начинать, хорошая привычка и читаемость

    Ну ошибка в public void MySave()
    попробуй по дебажить начни с
    Skins skins = Camera.main.GetComponent<Skins>();
    
    if(skins==null )Debug.log("initialization of the bug"); 
    Debug.Log(YandexGame.savesData.sand);
    Debug.Log(skins.Sand);
    YandexGame.savesData.sand is int ?Debug.Log("Ok"):Debug.Log(" Not INT");    тут за место инта должно долно быть skins.Sand не уверен что верно написал, надо проверить что YandexGame.savesData.sand и skins.Sand одинаковы по типу
    Написано
  • Как убрать лимит в 30 фпс на телефоне?

    @DrRen7
    Project setting => Player => Resolution and Presentation => optimizedFramePacing=false
    а ну Application.tagretframrate = 60 оставляем
    Написано
  • Почему GameObject null?

    @DrRen7
    kaliboba,
    ну камера это
    _camera=Camera.main;
    Ну в итоге все и пришло к тому что проблемы с заполнением скрипта) Хотя странно что рейкаст вообще сработал если луча нету
    Написано
  • Почему GameObject null?

    @DrRen7
    kaliboba,
    Ну так это тож самое что и у тебя просто чуть оптимизированей)
    И так все было верно сейчас просто костыли ищем.
    Ну есть такой вариант сделать shootPF дочерним объектом, объекта с этим компонентом.
    ///===///
     GameObject Decal = Instantiate(GetGO(), hit.point + (hit.normal * .01f));
     Decal.transform.SetParent(null); //под вопросом 
    ///===///
    GameObject GetGO()
    {
        return transform.GetChild(0).gameObject;
    }

    не знаю почему у тебя пропадает shootPF но если его нет и проблем нет)
    Написано
  • Почему GameObject null?

    @DrRen7
    kaliboba,
    хмм интересно, у декали нет никаких скриптов? можно попробовать передавать не GameObject а любой компонент что есть у делаки и инстатить его и будет тож самое, скрипт есть только на 1 объекте

    чучуть поправил код просто чтоб не создавать ещё один GO, больше из того что показано не выжать
    if (Input.GetMouseButtonDown(0))
     {
         Ray ray = _camera.ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out RaycastHit hit))
         {
            if(hit.transform.gameObject.TryGetComponent(out EnemyCode enemy))
             {
                 enemy.hit();
             }
             else
             {
                 if (shootPF == null) Debug.LogError("Instance Bug");
                 GameObject Decal=Instantiate(shootPF,hit.point + (hit.normal * .01f));
                 Decal.transform.forward = -hit.normal;
                 Decal.transform.SetParent(hit.transform);
             }
         }
     }
    Написано