diff --git a/Assets/Prefabs/Ball.prefab b/Assets/Prefabs/Ball.prefab index 49f9c0a..aa55773 100644 --- a/Assets/Prefabs/Ball.prefab +++ b/Assets/Prefabs/Ball.prefab @@ -16,7 +16,7 @@ GameObject: - component: {fileID: 7041796185663956337} - component: {fileID: 7286884547159090166} - component: {fileID: 8029731608843643848} - m_Layer: 0 + m_Layer: 3 m_Name: Ball m_TagString: Untagged m_Icon: {fileID: 0} @@ -102,7 +102,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 267dfd77302043669cc125190ddfb575, type: 3} m_Name: m_EditorClassIdentifier: - rb: {fileID: 0} --- !u!114 &8059693774009316043 MonoBehaviour: m_ObjectHideFlags: 0 @@ -177,7 +176,7 @@ Rigidbody2D: m_LinearDrag: 0 m_AngularDrag: 0.05 m_GravityScale: 0 - m_Material: {fileID: 0} + m_Material: {fileID: 6200000, guid: 2d231bbc8208f52c797c91aa2030f60f, type: 2} m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 1 diff --git a/Assets/Scripts/Game/AIPlayer.cs b/Assets/Scripts/Game/AIPlayer.cs index 030ad9d..23e6f2a 100644 --- a/Assets/Scripts/Game/AIPlayer.cs +++ b/Assets/Scripts/Game/AIPlayer.cs @@ -75,6 +75,8 @@ namespace Game { float requiredDistance = Mathf.Abs(futurePosition - X()) - Width / 2; if (requiredDistance < 0) return true; + if (Mathf.Abs(futurePosition) > Border) + return false; return Speed * seconds > requiredDistance; } @@ -132,7 +134,7 @@ namespace Game { } // No intersection -> Ball outside of field -> dont simulate further - return origin.x; + return IdlePosition; } private float GetTargetPosition() { diff --git a/Assets/Scripts/Game/Ball.cs b/Assets/Scripts/Game/Ball.cs index f832052..610d82e 100644 --- a/Assets/Scripts/Game/Ball.cs +++ b/Assets/Scripts/Game/Ball.cs @@ -1,26 +1,20 @@ using System; using Unity.Netcode; using UnityEngine; +using Random = UnityEngine.Random; namespace Game { public class Ball : NetworkBehaviour { public Rigidbody2D Rb { get; private 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; } - public bool IsAlive { - get { - float y = transform.position.y; - float y1 = BorderSize.Singleton.y1; - float y2 = BorderSize.Singleton.y2; - return y > y1 && y < y2; - } - } - + public bool IsAlive { get; private set; } = true; private void OnEnable() { Rb = GetComponent(); Collider = GetComponent(); @@ -28,11 +22,14 @@ namespace Game { private void Start() { Rb.velocity = new Vector2(0, 25); - Rb.position = new Vector2(1, 0); + Rb.position = new Vector2(Random.Range(-2, 2), 0); } private void FixedUpdate() { - + //TODO remove this and use triggers for death zone + if (Rb.position.y > BorderSize.Singleton.y2 || Rb.position.y < BorderSize.Singleton.y1) { + IsAlive = false; + } } } } diff --git a/Assets/Scripts/Game/GameManager.cs b/Assets/Scripts/Game/GameManager.cs index b4bd921..b9fe7d2 100644 --- a/Assets/Scripts/Game/GameManager.cs +++ b/Assets/Scripts/Game/GameManager.cs @@ -53,8 +53,8 @@ namespace Game { } private void Start() { - Settings.Type = Type.AI; - Settings.AIDifficulty = Difficulty.VeryHard; + Settings.Type = Type.Hybrid; + Settings.AIDifficulty = Difficulty.Easy; var ball = Instantiate(ballPrefab).GetComponent(); Balls.Add(ball); diff --git a/Assets/Scripts/Game/Player.cs b/Assets/Scripts/Game/Player.cs index 16f5576..14ebd09 100644 --- a/Assets/Scripts/Game/Player.cs +++ b/Assets/Scripts/Game/Player.cs @@ -19,7 +19,7 @@ namespace Game { protected float Speed => 10; // Unit distance from zero - private float Border => 10; + protected float Border => 10; private SpeedModification speedModification; private BorderModification borderModification; diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index fc90ab9..6a9a95e 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -7,6 +7,7 @@ PhysicsManager: m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 + m_DefaultMaxDepenetrationVelocity: 10 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 @@ -17,7 +18,7 @@ PhysicsManager: m_ClothInterCollisionDistance: 0.1 m_ClothInterCollisionStiffness: 0.2 m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 1 @@ -32,5 +33,6 @@ PhysicsManager: m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 + m_ImprovedPatchFriction: 0 m_SolverType: 0 m_DefaultMaxAngularSpeed: 50 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..2d6d371 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -8,7 +8,7 @@ TagManager: - Default - TransparentFX - Ignore Raycast - - + - Ball - Water - UI -