|
|
|
using Unity.Netcode;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace Game {
|
|
|
|
public class Ball : NetworkBehaviour {
|
|
|
|
|
|
|
|
private float SpeedGain { get; } = GameManager.BalanceValues.ballSpeedMultiplier;
|
|
|
|
|
|
|
|
public Rigidbody2D Rb { get; private set; }
|
|
|
|
|
|
|
|
public Player LastContactPlayer { get; private set; }
|
|
|
|
|
|
|
|
public bool IsPermanent { get; set; }
|
|
|
|
|
|
|
|
private CircleCollider2D Collider { get; set; }
|
|
|
|
|
|
|
|
public float Radius {
|
|
|
|
get => transform.localScale.x * Collider.radius;
|
|
|
|
set => transform.localScale = new Vector3(1, 1, 1) * value * 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Awake() {
|
|
|
|
Rb = GetComponent<Rigidbody2D>();
|
|
|
|
Collider = GetComponent<CircleCollider2D>();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnCollisionEnter2D(Collision2D other) {
|
|
|
|
if (other.gameObject.TryGetComponent(out Player player))
|
|
|
|
PlayerContact(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void PlayerContact(Player player) {
|
|
|
|
LastContactPlayer = player;
|
|
|
|
Rb.velocity *= SpeedGain;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|