Ответы пользователя по тегу Unity
  • Как НЕ выполнять условие при таче по UI элементам?

    Lapita12
    @Lapita12
    Тесты, тесты?
    void Update()
    {
        if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !EventSystem.current.IsPointerOverGameObject(null, null) && !EventSystem.current.IsPointerOverGameObject(null, EventSystem.current.currentTouchEvent)) && !endGame)
        {
            canExecute = false;
            cooldownTimer = cooldownDuration;
    
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            directionKnife = mousePosition;
            mousePosition.z = 0f;
            GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
    
            StartCoroutine(RotateKnife(knife));
        }
    }
    Ответ написан
    3 комментария
  • Почему персонаж не двигается и не показывает анимации?

    Lapita12
    @Lapita12
    Тесты, тесты?
    1. Добавить Rigidbody к персонажу
    2. Обновить скрипт для работы с Rigidbody

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Mouse : MonoBehaviour 
    {
        public float speed;
        public float sensitive;
        
        float horizontal;
        float vertical;
        float x;
        float z;
        
        public GameObject player;
        
        private Animator playerAnimator;
        private Rigidbody playerRigidbody;
        
        void Start()
        {
            Cursor.lockState = CursorLockMode.Locked;
            playerAnimator = player.GetComponent<Animator>();
            playerRigidbody = player.GetComponent<Rigidbody>();
        }
    
        void Update() 
        {
            x = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
            z = Input.GetAxis("Vertical") * speed * Time.deltaTime;
    
            horizontal += Input.GetAxis("Mouse X") * sensitive;
            vertical += Input.GetAxis("Mouse Y") * sensitive;
            vertical = Mathf.Clamp(vertical, -20, 20);
    
            Vector3 newPosition = playerRigidbody.position + player.transform.right * x + player.transform.forward * z;
            playerRigidbody.MovePosition(newPosition);
    
            transform.localRotation = Quaternion.Euler(-vertical, 0, 0);
            player.transform.localRotation = Quaternion.Euler(0, horizontal, 0);
            
            PlayerController(); 
        }
    
        void PlayerController() 
        {
            if (z > 0) 
            {
                if (Input.GetKey(KeyCode.LeftShift)) 
                {
                    playerAnimator.SetInteger("Move", 2);
                    speed = 4;
                } 
                else 
                {
                    playerAnimator.SetInteger("Move", 1);
                    speed = 2;
                }
            } 
            else if (z < 0) 
            {
                playerAnimator.SetInteger("Move", -1);
                speed = 2;
            } 
            else 
            {
                playerAnimator.SetInteger("Move", 0);
                speed = 0;
            }
        }
    }
    Ответ написан
    Комментировать
  • Unity или Unreal Engine для мобильной разработки?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для мобильных игр лучше всего использувать Unity, потому что это наиболее распространенная библиотека, поддерживающая множество платформ и позволяет легко портировать проекты. Кроме того, Unity имеет широкий спектр инструментов и компонентов для разработки игр, включая графический движок, редактор уровней, систему управления играбельным процессом и многое другое.
    Unity также обладает высокой производительностью благодаря оптимизированному трассированию лучей и использованию multiprocessing, что делает её идеальной для разработки сложных трехмерных игр.
    Однако, если ваш проект фокусируется только на двухмерной графике, то Unreal Engine может показаться излишним роскошью, учитывая, что он основан на трёхмерном движке.
    Важно отметить, что для решения такого вопроса необходимо провести собственные эксперименты, чтобы определить, какая библиотека лучше подходит для вашего конкретного проекта.
    Ответ написан
    2 комментария
  • Как изменить настройки сетки/спрайта?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Возможно, проблема в настройках сетки (grid) или масштабирования спрайта. Проверьте следующие настройки:

    1. Проверьте, что размер сетки (grid size) соответствует размеру клеток на сцене. Например, если клетки на сцене имеют размер 1м x 1м, то размер сетки должен быть установлен на 1м x 1м.

    2. Убедитесь, что масштаб спрайта установлен правильно. Если вы используете спрайт с размером 300 пикселей, то его масштаб должен быть установлен на 3 (т.е. каждый пиксель спрайта будет соответствовать одному юниту на сцене).

    3. Если вы используете программу для создания игр, проверьте настройки масштабирования и плотности пикселей (pixel density). Некоторые программы автоматически масштабируют спрайты и изменяют их размеры, чтобы они соответствовали плотности пикселей на устройстве, на котором будет запущена игра.

    Если проблема не решается, попробуйте задать размер спрайта в юнитах вместо пикселей. Например, если вы хотите, чтобы спрайт был высотой 3 клетки, установите его высоту в 3м (или 300см, в зависимости от единиц измерения на вашей сцене).
    Ответ написан