From c5228b3a6916d536b5b6e3da60736f0450c0d485 Mon Sep 17 00:00:00 2001 From: Kaj Forney Date: Thu, 21 Oct 2021 10:51:06 -0600 Subject: [PATCH] Fix self-collision issue. --- Assets/Scenes/level1.unity | 198 +++++++++++++++++++++++++++++++++++- Assets/Scripts/tetromino.cs | 8 +- 2 files changed, 200 insertions(+), 6 deletions(-) diff --git a/Assets/Scenes/level1.unity b/Assets/Scenes/level1.unity index e0c44ab..7c27777 100644 --- a/Assets/Scenes/level1.unity +++ b/Assets/Scenes/level1.unity @@ -172,6 +172,8 @@ GameObject: - component: {fileID: 389734758} - component: {fileID: 389734760} - component: {fileID: 389734759} + - component: {fileID: 389734762} + - component: {fileID: 389734761} m_Layer: 0 m_Name: Player m_TagString: Player @@ -239,7 +241,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 389734755} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -5.18, y: -3.24, z: 0} + m_LocalPosition: {x: -8, y: -9, z: 0} m_LocalScale: {x: 1, y: 1, z: 1.7791} m_Children: - {fileID: 698299619} @@ -261,6 +263,8 @@ MonoBehaviour: moveSpeed: 10 jumpForce: 15 isGrounded: 0 + jumpSound: {fileID: 389734762} + deathSound: {fileID: 389734761} --- !u!61 &389734759 BoxCollider2D: m_ObjectHideFlags: 0 @@ -308,6 +312,198 @@ Rigidbody2D: m_SleepingMode: 1 m_CollisionDetection: 0 m_Constraints: 4 +--- !u!82 &389734761 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389734755} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 75fdc3024561a4a9fb5c4698d3e811a0, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &389734762 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 389734755} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 7fe250a6998c2f77b8d2dd6f4dea931c, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!1001 &461357085 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/tetromino.cs b/Assets/Scripts/tetromino.cs index 38d67f1..bd70f6f 100644 --- a/Assets/Scripts/tetromino.cs +++ b/Assets/Scripts/tetromino.cs @@ -40,15 +40,13 @@ public class tetromino : MonoBehaviour //I want to run this for each piece of the tetromino. foreach (Transform child in transform) { - //Only do this if it's a piece at the bottom, so we don't detect ourself as a collision. - if (Math.Abs(child.localPosition.y - (0.5)) < 0.001) //my IDE suggested I do this to fix floating-point comparison issues, and I see the logic at work here. - { + if (validateFall(child)) { wouldCollide = true; break; } - } + } if (wouldCollide == false) @@ -70,7 +68,7 @@ public class tetromino : MonoBehaviour //NOTE: disabled "Queries Start in Colliders" in Project Settings>Physics 2D (thank you again, Tavi). RaycastHit2D collision = Physics2D.Raycast(pieceToCheck.position, Vector2.down, 1.0f); // Debug.DrawRay(pieceToCheck.position,Vector3.down,Color.red,1000.0f); - if (collision.collider != null && collision.collider.name != pieceToCheck.name) + if (collision.collider != null && collision.collider.transform.parent != pieceToCheck.parent) { Debug.Log("Collided with object: " + collision.collider.name); //We hit something, but what?