Ответы пользователя по тегу Unity
  • Почему в Unity я хожу на A вправо, на d в лево, на w назад, на s вперед?

    by_kapt0xa
    @by_kapt0xa
    Учу кресты катаюсь на велике
    Vector3 moveDir = -new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
                      ^ вы уверены что вам нужен тут минус?
    Ответ написан
    Комментировать
  • Как использовать Time.deltaTime в методе transform.RotateAround?

    by_kapt0xa
    @by_kapt0xa
    Учу кресты катаюсь на велике
    я нажал не ту кнопку и удалил ответ. восстанавливаю:

    видос:
    https://youtu.be/QavP2SPtXQA
    код:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour //дай скрипту норм назвыание а не "нью бехейвор скрипот"
    {
        void Start()
        {
            axis.Normalize();
        }
    
        [SerializeField] Vector3 axis;//ось вращения
        [SerializeField] float rotation_speed;// градусы в секунду
        void Update()//если update или late update, то используйте deltaTime, если fixed update, то используйте fixed delta time. грубо говоря одно fixed синхронизированно с физическими событиями
        {
            transform.Rotate(axis, rotation_speed * Time.deltaTime);
        }
    }
    Ответ написан
    Комментировать
  • Как сделать вращение вокруг игрока через синус и косинус?

    by_kapt0xa
    @by_kapt0xa
    Учу кресты катаюсь на велике
    я этот видос сделал для другого чувака, но думаю тебе тоже пригодится
    видос:
    https://youtu.be/QavP2SPtXQA
    код:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour //дай скрипту норм назвыание а не "нью бехейвор скрипот"
    {
        void Start()
        {
            axis.Normalize();
        }
    
        [SerializeField] Vector3 axis;//ось вращения
        [SerializeField] float rotation_speed;// градусы в секунду
        void Update()//если update или late update, то используйте deltaTime, если fixed update, то используйте fixed delta time. грубо говоря одно fixed синхронизированно с физическими событиями
        {
            transform.Rotate(axis, rotation_speed * Time.deltaTime);
        }
    }


    дополнение
    спешал 4ю еще видос на 18 минут:
    https://www.youtube.com/watch?v=s0VcFiL2_RE
    код из видоса:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript1 : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            gameObject.SetActive(false);
            rotation_axis.Normalize();
            rotated_sword = null;
        }
    
        [SerializeField] Transform rot_hand;
        [SerializeField] Transform usual_hand;
        [SerializeField] float rotation_speed;
        [SerializeField] Vector3 rotation_axis;
        Transform rotated_sword;
        [SerializeField] Transform current_sword;
    
        public void RotateSword()
        {
            RotateSword(current_sword);
        }
    
        void RotateSword(Transform sword)
        {
            Debug.Assert(rotated_sword == null);
            gameObject.SetActive(true);
            rotated_sword = sword;
            sword.parent = rot_hand;
            sword.localPosition = new Vector3(0, 0, 0);
            sword.localRotation = new Quaternion(0, 0, 0, 1);
    
        }
    
        public void StopRotatingSword()
        {
            Debug.Assert(rotated_sword != null);
            rotated_sword.parent = usual_hand;
            rotated_sword.localPosition = new Vector3(0, 0, 0);
            rotated_sword.localRotation = new Quaternion(0, 0, 0, 1);
            rotated_sword = null;
            gameObject.SetActive(false);
        }
    
        public bool IsRotatingSword()
        {
            return rotated_sword != null;
        }
    
        void FixedUpdate()
        {
            transform.Rotate(rotation_axis, rotation_speed * Time.fixedDeltaTime);
        }
    }
    Ответ написан
    Комментировать
  • Как сделать подбор предметов на кнопку?

    by_kapt0xa
    @by_kapt0xa
    Учу кресты катаюсь на велике
    преддположу что ты пишешь игру на юнити, управление - клавомышь, надо подойти к предмету и нажать E чтобы он попал в твой инвентарь
    прикрепи к персонажу область-триггер, стелай скрипт, где ты будешь через onTriggerStay отслеживать что валяется рядом с персонажем и если ты нажмешь кнопку, то это все надо подобрать.
    нажатие кнопки отслеживай через обработку нажания клавиатуры
    можно посмотреть цикл событий в юнити и решить, где ты будешь отслеживать нажатие кнопки, где ты будешь отслеживать отпускание кнопки
    например
    bool key_pressed;
    void Update()
    {
        key_pressed = Input.GetKeyDown(...);
    }
    void OnTriggerStay(Collider other)
    {
        if(otrer - это не подбираемый предмет)
        {
              return;
        }
    
        if(key pressed)
        {
              забрать предмет в инвентарь;
        }
    }
    Ответ написан
    Комментировать