IceHockeyMP/Assets/Scripts/BouncingBall.cs
2025-07-14 23:04:51 +05:30

55 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BouncingBall : MonoBehaviour
{
public float bounceForce = 5f;
Rigidbody2D rb;
void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if(collisionQueued != null){
if(collisionVelocity.sqrMagnitude < 0.2f){
rb.velocity = collisionQueued.contacts[0].point.normalized * bounceForce;
}else{
Vector2 normal = collisionQueued.contacts[0].normal;
Vector2 reflection = Vector2.Reflect(collisionVelocity, normal);
rb.velocity = reflection.normalized * bounceForce;
}
collisionQueued = null;
}
if(collisionQueued==null){
collisionVelocity = rb.velocity;
}
}
Collision2D collisionQueued = null;
Vector2 collisionVelocity = Vector2.zero;
void OnCollisionEnter2D(Collision2D collision)
{
collisionQueued=collision;
//collisionVelocity=rb.velocity;
rb.velocity=Vector2.zero;
}
void OnDrawGizmos()
{
if(collisionQueued != null)
{
Gizmos.color = Color.red;
Gizmos.DrawLine(collisionQueued.contacts[0].point, collisionQueued.contacts[0].point + collisionQueued.contacts[0].normal * 0.1f);
Gizmos.DrawLine(collisionQueued.contacts[0].point, collisionQueued.contacts[0].point + collisionVelocity * 1f);
}
}
}