Страница 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 только не забывайте умножать в апдейте.