Здравствуйте. Есть такая проблемка - на сцене есть несколько объектов, и есть у каждой вот такой скрипт, который их перемещает по нажатиям wasd ( скрипт кривой, знаю сам ).
Код:
using UnityEngine;
public class move : MonoBehaviour
{
private float V = 0;
private float VV = 0.1f;
private float posX, posY, posZ;
void Update()
{
//если прижата клавиша P
if (Input.GetKeyDown(KeyCode.D))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownD();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.D))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpD();
}
if (Input.GetKeyDown(KeyCode.A))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownA();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.A))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpA();
}
if (Input.GetKeyDown(KeyCode.W))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownW();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.W))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpW();
}
if (Input.GetKeyDown(KeyCode.S))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownS();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.S))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpS();
}
if (Input.GetKeyDown(KeyCode.LeftShift))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownLeftShift();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.LeftShift))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpLeftShift();
}
if (Input.GetKeyDown(KeyCode.LeftControl))
{
//Вызываем функцию TransformerKeyDown
TransformerKeyDownLeftControl();
}
//если клавишу отжали
if (Input.GetKeyUp(KeyCode.LeftControl))
{
//Вызываем функцию TransformerKeyUp();
TransformerKeyUpLeftControl();
}
}
void TransformerKeyDownD()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
if (posX <= 53)
{
//перемещаем в новые координаты
transform.position = new Vector3(posX + 28, posY, posZ);
}
}
void TransformerKeyUpD()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
void TransformerKeyDownA()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
if (posX >= -53)
{
//перемещаем в новые координаты
transform.position = new Vector3(posX - 28, posY, posZ);
}
}
void TransformerKeyUpA()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
void TransformerKeyDownW()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
if (posZ <= 139)
{
//перемещаем в новые координаты
transform.position = new Vector3(posX, posY, posZ + 28);
}
}
void TransformerKeyUpW()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
void TransformerKeyDownS()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
if (posZ >= -27)
{
//перемещаем в новые координаты
transform.position = new Vector3(posX, posY, posZ - 28);
}
}
void TransformerKeyUpS()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
void TransformerKeyDownLeftShift()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
//перемещаем в новые координаты
transform.position = new Vector3(posX, posY + 7, posZ);
}
void TransformerKeyUpLeftShift()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
void TransformerKeyDownLeftControl()
{
//записываем текущие координаты в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
V = posY;
if (V >= VV) {
//перемещаем в новые координаты
transform.position = new Vector3(posX, posY - 7, posZ); }
}
void TransformerKeyUpLeftControl()
{
//перемещаем в координаты записаны в переменные
posX = transform.position.x;
posY = transform.position.y;
posZ = transform.position.z;
transform.position = new Vector3(posX, posY, posZ);
}
}
В итоге, при нажатии на WASD двигаются все. Как в Юнити сделать так, чтобы можно было мышкой выбрать объект какой именно перемещать, и чтобы перемещение работало только с ним. Заранее благодарен.