Задать вопрос
Ответы пользователя по тегу Unity
  • Как сделать ускорение свободного падения(Unity)?

    StrannikY
    @StrannikY Автор вопроса
    Программирую на C#, часто загораюсь идеями,учусь.
    Я придумал,как это решить.
    В общем,все решается таким скриптом:
    if (!OnFloor) #если игрок НЕ стоит на земле
            {
                Physics.gravity = Vector3.Lerp(Physics.gravity, new Vector3(0, -120f, 0), Time.deltaTime); #постепенно увеличивает гравитацию.
            }
            else
            {
                Physics.gravity = new Vector3(0, -9.81f, 0); #Возвращает гравитацию в исходное положение при падении на землю
            }


    new Vector3 - это максимальная скорость падения. Не рекомендую значение устанавливать больше (0, -200f, 0),потому что персонаж может пролетать сквозь тонкие объекты.

    new Vector3 можно заменить на Physics.gravity * 1.5f , но в таком случае при падении с высокой горы ваш персонаж провалится сквозь землю.

    Time.deltaTime вы можете умножить на какое-нибудь число (чем больше число,тем быстрее разгон),тогда получится так: Time.deltaTime * 2f
    Ответ написан
    Комментировать
  • Как в unity сделать плавный поворот дочернего объекта?

    StrannikY
    @StrannikY Автор вопроса
    Программирую на C#, часто загораюсь идеями,учусь.
    Спасибо Lapita12 за ответ:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BroomController : MonoBehaviour 
    {
        private GameObject broom;
        private bool InHand = true;
    
        
        void Start() 
        {
            broom = GameObject.Find("Broom");
            Cursor.visible = false;
        }
    
        
        void Update() 
        {
            GameObject parent = broom.transform.parent.gameObject;
            float targetAngle = 0f;
    
            if (Input.GetKey("q") || Input.GetKey("e")) 
            {
                if (Input.GetKey("q")) 
                {
                    targetAngle = 20f;
                }
    
                if (Input.GetKey("e")) 
                {
                    targetAngle = -20f;
                }
                
                Quaternion parentRotation = parent.transform.rotation;
                Quaternion targetRotation = Quaternion.Euler(0, 0, targetAngle);
                Quaternion broomTargetRotation = parentRotation * targetRotation;
                broom.transform.rotation = Quaternion.RotateTowards( broom.transform.rotation, broomTargetRotation, Time.deltaTime * 180f);
            }
        }
    }
    Ответ написан
    Комментировать