Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by DranrebKing · Aug 15, 2018 at 03:47 AM · c#unity 5matching

Destroy GameObject using Tag and Specific Location

I have a tetris-like matching game. When three rows are matched, I want them to be destroyed. Each colored block has its own unique tag "GreenBlock" , "RedBlock" etc. I already have successfully made the game identified whenever three same-colored blocks are within each other.

To visualize the screen, I made a custom Grid System using GameObjects with BoxCollider 2d:

| C1 | C2 | C3 | C4 | C5 |
| B1 | B2 | B3 | B4 | B5 |
| A1 | A2 | A3 | A4 | A5 |

Now, for example on A1-A2-A3, three green blocks were matched. Those green blocks have the same "GreenBlock" tag, alongside with all the green blocks on the screen. I only wanted to destroy the "GreenBlocks" tagged gameObjects on positions A1-A2-A3. I cannot just say delete all "GreenBlocks" tagged objects since it would delete all Green Blocks on the screen even if they are not matched. I cannot also do the "inspector method" (dragging items their manually on public variables before running the game) since all the blocks are generated randomly.

How can I delete those same-tagged objects on a specific location?

Comment
Add comment · Show 8
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image NoDumbQuestion · Aug 15, 2018 at 04:47 AM 0
Share

https://docs.microsoft.com/en-us/dotnet/csharp/program$$anonymous$$g-guide/arrays/multidimensional-arrays

https://forum.unity.com/threads/declaring-and-initializing-2d-arrays-in-c.52954/

https://noobtuts.com/unity/2d-tetris-game/

avatar image DranrebKing NoDumbQuestion · Aug 15, 2018 at 07:11 AM 0
Share

How can I target a gameObject on an exact Vector2 Position? Like if(gameObjectExistsOn(0.5f, 1.5f)?

avatar image NoDumbQuestion DranrebKing · Aug 15, 2018 at 07:13 AM 0
Share

you don't.

You tell it to destroy block like B5, A3.

That's why i send you link to learn about array and simple 2D matrix.

Show more comments
avatar image eses · Aug 15, 2018 at 07:56 AM 0
Share

@Dranreb$$anonymous$$ing - what @NoDumbQuestion is saying - don't try to use visuals (gameobjects) as the system for detecting placement of blocks. This kind tile data is better of handled as pure data (1d array, 2d array). $$anonymous$$anage and check your tile placement in array data, then "render" it using gameobjects. Yes, gameobjects should be used for items like rolling ball, stackable boxes, things that exist in 3d world, but they are not very suitable for task like this.

avatar image DranrebKing eses · Aug 15, 2018 at 08:02 AM 0
Share

Oh that makes sense, thanks. Can you provide a simple example out of this? $$anonymous$$ost documentations I read online are really so advanced like I don't even understand what I'm reading.

avatar image eses DranrebKing · Aug 15, 2018 at 08:11 AM 0
Share

@NoDumbQuestion already provided some links, like I said. You should familiarize yourself with the concept first.

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by eses · Aug 15, 2018 at 08:43 AM

Hi @DranrebKing - @NoDumbQuestion already provided some good links. You should familiarize yourself with the concepts first - learn about:

  • Arrays and Lists

  • Multidimensional arrays

  • Iteration of arrays

  • How to read array variables

  • how to spawn and remove gameobjects (or recycle them from object pool)


Note that this is no way fully working code, you should definitely first read the articles provided in comments and learn how things work.


The idea is that you create the playfield from data, then do the checking of valid moves, neighbours, removal of tiles and such using something like the CheckTileAt method here. After each frame's updates, whatever the game logic does, you've done changes to your game playfield data, and you have to update "the visuals". Here I just once instantiate gameobjects in Start, to match the playfield data. in reality, you'd simply update/remove/respawn needed block Gameobjects each frame.


 // create playfield data 3x4
 // tile type defined in 1,2,3 int values
 public int[,] tiles =  
 { 
     {1, 3, 1 }, 
     {1, 3, 1 }, 
     {1, 2, 2 }, 
     {1, 1, 2 } 
 };
 
 // Prefab used to display the tile data
 public GameObject blockPrefab; 
 
 void Start () 
 {
     // Update blocks from data
     UpdateBlocks();
 
     // How to read tiles in x,y position of array
     Debug.Log("Tile at 0,0 is:" + CheckTileAt(0,0));
     Debug.Log("Tile at 1,2 is:" + CheckTileAt(1,2));
     Debug.Log("Tile at 2,3 is:" + CheckTileAt(2,3));
 }
 
 
 void UpdateBlocks ()
 {
     var x = 0;
     var y = 0;
 
     // Iterate all tiles of x,y array - for loop might be better
     foreach (var t in tiles)
     {
         // Instantiate block
         var block = Instantiate(blockPrefab) as GameObject;
 
         // Set material by tile type
         if (t == 1)
             block.GetComponent<Renderer>().material.color = Color.red;
         else if (t == 2)
             block.GetComponent<Renderer>().material.color = Color.blue;
         else if (t == 3)
             block.GetComponent<Renderer>().material.color = Color.yellow;
 
         // Set block position
         block.transform.position = new Vector2(x,-y);
                     
         x++;
         
         if (x == 3) 
         {
             x = 0;
             y++;
         }
     }
 }
 
 // Helper
 int CheckTileAt (int x, int y)
 {
     return tiles[y,x];
 }
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image DranrebKing · Aug 15, 2018 at 01:46 PM 0
Share

Thank you so much! I kinda get the idea. I tried this code on another scene just to mess with it and this might be the one to help me! I just wonder, what do the "Tile at 0,0 is at: 1" is for? Like I don't get it.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

622 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Access Top and Right Variables from RectTransform 0 Answers

unity create scene from script and pass information between scenes 0 Answers

Rotation Changing Z-Coordinate Value 0 Answers

Random Generation (Dungeon) with improvements in mind. 0 Answers

How to use the results of a dice roll? 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges