Здравствуйте) Накопился ряд вопрос по JS скриптам в Unity. Помогите их решить) Идея такая: пользователь используя кнопки мыши и кнопки клавиатуры передвигает сферу как ему угодно в приделах комнаты.
1)Как сделать так, чтобы при движение сферы,она не застревали в ограничивающих её координатах(стенках комнаты) ,а плавно двигалась по ним вдоль стенки (при движении,если пользователь как бы хочет завести шарик за стенку)?
2)Как можно получить координаты сферы и используя эти координаты создать такую animation (используя JS) таким образом,чтобы при нажатии на какой-нибудь предмет(пусть это будет кнопка) сфера опускалась вниз, например вот мы подвинули сферу? используя предыдущий скрипт передвижения,нажали на кyопку,сфера опустилась вниз.
Заранее спасибо за ответы)
Cам скрипт передвижения объекта
Code
function OnMouseDown () { var screenSpace = Camera.main.WorldToScreenPoint(transform.position) ; var offset = transform.position - Camera.main.ScreenToWorldPoint(Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z)); var curPosition=transform.position; var curScreenSpace = Vector3(0,0,0); while (Input.GetMouseButton(0) ) { curScreenSpace = Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z); curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset; /*ограничение области передвижения сферы*/ if ((curPosition.x>=-5)&&(curPosition.x<=5)&&(curPosition.y<=4.5)&&(curPosition.y>=0.8)&&(curPosition.z<=13)&&(curPosition.z>=-5)) { transform.position = curPosition;} yield; } }
Как сделать так, чтобы при движение сферы,она не застревали в ограничивающих её координатах(стенках комнаты) ,а плавно двигалась по ним вдоль стенки (при движении,если пользователь как бы хочет завести шарик за стенку)?
Тут просто задаем ограничение.
Code
if (Input.mousePosition.x > 50) Input.mousePosition.x = 50;
или
Code
if (Input.mousePosition.x > 50) curPosition = нужное значение;