Я пытаюсь сделать то, что мне не подходит. Я хочу, чтобы мой объект масштабировался в зависимости от положения мыши по оси Y.
void Update()
{
var mPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mPosition.z = 0;
target.transform.position = mPosition;
float scaleValue = Mathf.Round(mPosition.y);
target.transform.localScale = new Vector3(target.transform.localScale.x + scaleValue / 50f, target.transform.localScale.y + scaleValue / 50f, 0f);
if (Input.GetMouseButtonDown(0) && canShoot)
{
Fire();
}
}
Проблема в том, что после запуска игры объект (цель) неуклонно растет. Я просто хочу создать какой-то эффект, когда я двигаю муссом вверх, объект сжимается, когда он движется вниз, объект растет. В чем я ошибаюсь, спасибо !!!
Проблема в том, что вы добавляете свой местный масштаб на каждом кадре. Вам следует сделать что-то в этом роде:
Vector3 startScale;
void Awake(){
startScale = target.transform.localScale;
}
void Update()
{
var mPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mPosition.z = 0;
target.transform.position = mPosition;
float scaleValue = Mathf.Round(mPosition.y);
// you probably need to change the scaleValue to make it make more sense
target.transform.localScale =startScale * scaleValue;
if (Input.GetMouseButtonDown(0) && canShoot)
{
Fire();
}
}
Да, что-то в этом роде, но это должно работать над кодом, потому что если y == 0, масштаб равен 0. Мне нужно сделать что-то вроде: если y == -5, то target.localscale = 1f, если y == -4, затем target.localscale = 0.9f .... и так далее
да, я подумал, это было больше для того, чтобы указать вам правильное направление;)
какой должен быть масштаб для y = 0? для y = 10? для y = 100? PartTimeIndie написал основательный ответ, но вы не предоставили информацию, которая могла бы дать вам что-то более конкретное.