@SkrinV

Как изменяться позицию объекта с помощью мыши?

Есть скрипт, который по идеи должен перемещать объект(а так же его увеличивать), когда мышь нажата на самом объекте
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class scale : MonoBehaviour
{
Vector3 pos = new Vector3();

private void OnMouseEnter()
{
transform.localScale = new Vector3(0.30f, 0.02f, 0.50f);
}

private void OnMouseExit()
{
transform.localScale = new Vector3(0.25f, 0.01f, 0.45f);
}
void OnMouseDrag()
{
transform.position = Vector3(pos);
}
}

Но юнити выдаёт ошибку
Assets\Script\scale.cs(20,30): error CS1955: Non-invocable member 'Vector3' cannot be used like a method.

Как её исправить?
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
REKTOR_RG
@REKTOR_RG
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class scale : MonoBehaviour
{
Vector3 pos = new Vector3();

private void OnMouseEnter()
{
transform.localScale = new Vector3(0.30f, 0.02f, 0.50f);
}

private void OnMouseExit()
{
transform.localScale = new Vector3(0.25f, 0.01f, 0.45f);
}
void OnMouseDrag()
{
transform.position = new Vector3(pos);
}
}

По идее должно работать. Проблема в том что в функции OnMouseDrag() вы не вызвали конструктор (не указали "new")
UPD: Пересмотрел ваш код, и понял что то, что я написал скорее всего работать не будет. Вам вообще не нужен конструктор Vector3, вам нужно просто указать
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class scale : MonoBehaviour
{
Vector3 pos = new Vector3();

private void OnMouseEnter()
{
transform.localScale = new Vector3(0.30f, 0.02f, 0.50f);
}

private void OnMouseExit()
{
transform.localScale = new Vector3(0.25f, 0.01f, 0.45f);
}
void OnMouseDrag()
{
transform.position = pos;
}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы