Что же я прошу от вас(любому из этих пунктов я буду рад):
1)Скинуть видео урок или гайд как сделать такое управление
2)Дать ссылки на материал который поможет мне это сделать (не весь юнити мануал)
3)Дать любую подсказку
4)Если существует название для такого типа управления , то я рад буду его
узнать.
//Одно из видео в интернете (геймплей)
https://www.youtube.com/watch?v=PafegklOju8
Ну и фото
Вот вам основная часть скрипта. Остальное допишите сам. Не трогайте скрипт, если не разбирайтесь в высшем математике!
Работоспособность СкриптВнимание: Этот скрипт вы должны ставить на мяча.
public class Control : MonoBehaviour
{
public float force;
float distance, rotation, rotationRadian;
bool canGo;
public GameObject Ball, LeftWall, TopWall, RightWall;
private void Start()
{
canGo = false;
}
private void Update()
{
Drop();
}
void Drop()
{
if (Input.GetMouseButtonUp(0))
{
Vector2 pressedPosition = Input.mousePosition;
Vector2 center = Ball.transform.position;
Vector2 pressedVector = new Vector2(pressedPosition.x - center.x, pressedPosition.y - center.y);
distance = Mathf.Sqrt
(
Mathf.Pow(pressedVector.x, 2) + Mathf.Pow(pressedVector.y, 2)
);
Vector2 verticalVector = new Vector2(0, distance);
rotationRadian = Mathf.Acos
(
(verticalVector.x * pressedVector.x + verticalVector.y * pressedVector.y) /
Mathf.Sqrt
(
(Mathf.Pow(verticalVector.x, 2) + Mathf.Pow(verticalVector.y, 2)) *
(Mathf.Pow(pressedVector.x, 2) + Mathf.Pow(pressedVector.y, 2))
)
);
rotation = -rotationRadian * Mathf.Rad2Deg;
if (pressedPosition.x < center.x)
{
rotation = 360.0f - rotation;
rotationRadian = 2 * Mathf.PI - rotationRadian;
}
Ball.transform.eulerAngles = new Vector3(0.0f, 0.0f, rotation);
canGo = true;
}
if (canGo)
{
Ball.transform.position = new Vector2
(
Ball.transform.position.x + force * Mathf.Sin(rotationRadian),
Ball.transform.position.y + force * Mathf.Cos(rotationRadian)
);
}
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject == LeftWall || other.gameObject == RightWall)
{
rotation = - rotation;
rotationRadian = - rotationRadian;
Ball.transform.eulerAngles = - Ball.transform.eulerAngles;
}
if (other.gameObject == TopWall)
{
rotation = 180.0f - rotation;
rotationRadian = Mathf.PI - rotationRadian;
Ball.transform.eulerAngles = new Vector3(0.0f, 0.0f, 180.0f) - Ball.transform.eulerAngles;
}
}
}
Окно Inspector
Сборка персонального компьютера от Artline: умный выбор для современных пользователей