Мороз Админов
Знаток
(389)
1 месяц назад
using UnityEngine;
public class BallController : MonoBehaviour
{
private Rigidbody2D rb;
[Header("Настройки шарика")]
public float initialSpeed = 1f;
void Start()
{
rb = GetComponent<Rigidbody2D>();
if (rb == null)
{
Debug.LogError("Rigidbody2D не найден на объекте Ball!");
return;
}
// Установка начальной скорости
rb.velocity = new Vector2(1f, 1f).normalized * initialSpeed;
}
void OnCollisionEnter2D(Collision2D collision)
{
// "Breakable"
if (collision.gameObject.CompareTag("Breakable"))
{
Destroy(collision.gameObject);
}
// Обработка отскока
if (collision.contacts.Length > 0)
{
Vector2 contactNormal = collision.contacts[0].normal;
Vector2 reflectedVelocity = Vector2.Reflect(rb.velocity, contactNormal).normalized * initialSpeed;
rb.velocity = reflectedVelocity;
// Убедитесь, что добавились изменения для мета-движения в случае столкновения
rb.angularVelocity = 0f; // сбрасываем угловую скорость,
если это необходимо
}
}
}
"угол падения равен углу отражения"