У меня есть Canvas. На нем есть некое поле Field и в нем объект Aim. Aim должен двигаться с определенной скоростью и "отскакивать" от границ Field. Как это сделать?
Вот мои попытки:
public GameObject Aim;
public Transform MaxX;
float maxX;
public Transform MaxY;
float maxY;
public Transform MinX;
float minX;
public Transform MinY;
float minY; //Это все "грани"
void Start()
{
maxX = MaxX.transform.position.x;
maxY = MaxY.transform.position.y;
minX = MinX.transform.position.x;
minY = MinY.transform.position.y;
Debug.Log($"{maxX} {maxY} {minX} {minY}");
}
void Update()
{
Move();
}
public float Speed;
void Move()
{
Aim.transform.Translate(Aim.transform.up*Speed);
Debug.Log((Vector2)Aim.transform.position);
float x = Aim.transform.position.x;
if (x > maxX)
{
Rotate(60);
}
else if (x < minX)
{
Rotate(60);
}
float y = Aim.transform.position.y;
if (y > maxX)
{
Rotate(60);
}
else if (y < minX)
{
Rotate(60);
}
}
//Вращаем и, тем самым, отскакиваем от грани
void Rotate(float angle)
{
Debug.Log("A");
Aim.transform.Rotate(new Vector3(0, 0, angle));
}
Все объекты - MaxX
, MaxY
, MinX
, MinY
, Aim
- находятся в Field
Я думал еще добавить коллайдеры, и делать это через OnCollision, но не думаю что это хорошая идея.
В Unity есть куча инструментов для работы с миром. Но как быть, если вся игра - это часть UI?
Описанная вами задача решается не инструментами Unity
, а весьма банальным кодом, без физики. Не transform.Translate
, а просто localPosition += MoveVec
. При столкновении с вертикальными стенками менять x = -x
и соответственно y = -y
горизонтальными у MoveVec
. Вот и всё. И никаких Rotate
.
П.C. не паникуйте и разберитесь с устройством Canvas
и его взаимодействием с сценой и камерой. Как и написал коллега, игра на UI это стрельба себе в ногу, причём из BFG
, если только вы не делаете текстовую рпг/квест или 2048.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется проблема с визуализацией в MetroUIЕсли в MetroTabControl создать MetroPanel, и в параметре Dock поставить заполнение, то появляются такие полоски
С наступающим! (для всех, читающих в 2020 - с наступившим!) )
После обновления версии mysql по этой статье и перезагрузки сервера, перестало заходить по старым доступам в бд и на сайтах пишет нет подключения...
Почему когда я вставляю код с выбором option в select и вывод данные в другом блоке, здесь всё работаетА когда вставляю на сайте, выбивается ошибка: