Страница 1 из 1

Плвное изменение scale

СообщениеДобавлено: 28 сен 2022, 19:51
e-x
Задача.
По onMouseDown происходит плавное изменение scale куба до заданного значения.
Реализация.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Force : MonoBehaviour
{
   
    public GameObject cube;
   
    float speedF = 0.01f;
   
    public Vector3 endPos;

    private float _speed;

    private void OnMouseDown()


    {
         cube.transform.localScale = Vector3.Lerp(transform.position, endPos, speedF);
    }
}
 


Итого.Нажимаю кнопку, мой куб мгновенно достигает гиганстких размеров и растет, значение endPos выставленные в инспекторе никак не ограничивают, манипуляции со скоростью никак не изменяют рост Scale.
Помогите плиз.
Спасибо!

Re: Плвное изменение scale

СообщениеДобавлено: 29 сен 2022, 11:26
Alkos26Rus
Синтаксис:
Используется csharp
cube.transform.localScale = Vector3.Lerp(cube.transform.localScale, endPos, speedF);

Re: Плвное изменение scale

СообщениеДобавлено: 29 сен 2022, 12:55
e-x
да так по интересней...спасибо...но! чтоб scale доехал до 5 надо постоянно княпать мышкой, а надо раз нажал и скейл медленно (согласно переменной спид) поехал до 5. Как тут быть?

Re: Плвное изменение scale

СообщениеДобавлено: 29 сен 2022, 14:40
Alkos26Rus
e-x писал(а):да так по интересней...спасибо...но! чтоб scale доехал до 5 надо постоянно княпать мышкой, а надо раз нажал и скейл медленно (согласно переменной спид) поехал до 5. Как тут быть?


перенести Lerp в апдейт и при клике менять endPos, по умолчанию сделай его 1
Синтаксис:
Используется csharp

public class Force : MonoBehaviour
{
   
    public GameObject cube;
   
    float speedF = 0.01f;
   
    public Vector3 endPos;

    private float _speed;

    private void OnMouseDown()


    {
         endPos = new Vector3(5, 5, 5);
    }

void Update(){
cube.transform.localScale = Vector3.Lerp(transform.position, endPos, speedF);
}

}

 

Re: Плвное изменение scale

СообщениеДобавлено: 29 сен 2022, 14:56
e-x
все тоже самое, кода также работает как и мой вариант.

Re: Плвное изменение scale

СообщениеДобавлено: 29 сен 2022, 15:38
e-x
все работает, спасибо, я видимо гдето ошибся!

Re: Плвное изменение scale

СообщениеДобавлено: 30 сен 2022, 14:12
e-x
а как такой же трюк со светом сделать, параметр range

lightT.range = Mathf.Lerp(startRange, endRange, speedRange);

у меня все мгновенно происходит, че плавности нет?)

Re: Плвное изменение scale

СообщениеДобавлено: 30 сен 2022, 18:48
breNnor-
e-x писал(а):а как такой же трюк со светом сделать, параметр range

lightT.range = Mathf.Lerp(startRange, endRange, speedRange);

у меня все мгновенно происходит, че плавности нет?)


Синтаксис:
Используется csharp
lightT.range = Mathf.Lerp(startRange, endRange, speedRange * Time.deltaTime);


Вот мой спящий НПС с фонариком.
Синтаксис:
Используется csharp
const float CONST_LIGHT_RANGE_SLEEP     = 10f;

if (_sleep == true)
                    _light.range = Mathf.PingPong(Time.time * 5f, CONST_LIGHT_RANGE_SLEEP);

Re: Плвное изменение scale

СообщениеДобавлено: 30 сен 2022, 20:10
Alkos26Rus
e-x писал(а):а как такой же трюк со светом сделать, параметр range

lightT.range = Mathf.Lerp(startRange, endRange, speedRange);

у меня все мгновенно происходит, че плавности нет?)

первый параметр это текущее значение
Синтаксис:
Используется csharp
lightT.range = Mathf.Lerp(lightT.range, endRange, speedRange);
 

Re: Плвное изменение scale

СообщениеДобавлено: 02 окт 2022, 10:54
e-x
Спасибо всем за помощь, заработало)

Re: Плвное изменение scale

СообщениеДобавлено: 03 окт 2022, 21:21
1max1
Ага, на deltaTime только не забывайте умножать в апдейте.