Why this happens?? Spawned object problem 2D, Tetris Game.
The gameobjects coming from top to bottom like tetris, if there is 2 same game object and when they ontriggerenter each other, spawns a different object and destroy themselves, if 2 different gameobject ontriggerenter, nothing happens normally and the gameobject that come can stay top of the other. But when same objects spawns a new object the object is like triggered, other gameobjects can pass through the new one.
there is 8 top of 2 as you can see..
i cant add more images but the 8 (left one) is passing through 4, because 4 is spawned object.
Why this happens please help guys! Here is the Movement Code:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Sayilar : MonoBehaviour { float sonDusus = 0f;
void Update () {
if (Input.GetKeyDown (KeyCode.LeftArrow)) {
transform.position += new Vector3 (-1, 0, 0);
if (IcerdekiDurumlar ()) {
UpdateOyunAlani ();
} else {
transform.position += new Vector3 (1, 0, 0);
}
} else if (Input.GetKeyDown (KeyCode.RightArrow)) {
transform.position += new Vector3 (1, 0, 0);
if (IcerdekiDurumlar ()) {
UpdateOyunAlani ();
} else {
transform.position += new Vector3 (-1, 0, 0);
}
} else if (Input.GetKeyDown (KeyCode.DownArrow) || Time.time - sonDusus >= 1) {
transform.position += new Vector3 (0, -1, 0);
if (IcerdekiDurumlar ()) {
UpdateOyunAlani ();
} else {
transform.position += new Vector3 (0, 1, 0);
//FindObjectOfType<dogur> ().SpawnObje ();
enabled = false;
}
sonDusus = Time.time;
}
}
bool IcerdekiDurumlar ()
{
foreach (Transform child in transform) {
Vector2 v = OyunAlani.RoundVector (child.position);
if(!OyunAlani.Icerde(v))
return false;
if (OyunAlani.grid [(int)v.x, (int)v.y] != null && OyunAlani.grid [(int)v.x, (int)v.y].parent != transform)
return false;
}
return true;
}
void UpdateOyunAlani(){
for (int y = 0; y < OyunAlani.sutun; ++y){
for(int x = 0; x < OyunAlani.satir; ++x){
if(OyunAlani.grid[x,y] != null) {
if(OyunAlani.grid[x,y].parent == transform) {
OyunAlani.grid[x,y] = null;
}
}
}
}
foreach (Transform child in transform) {
Vector2 v = OyunAlani.RoundVector (child.position);
OyunAlani.grid[(int)v.x, (int)v.y] = child;
}
}
}
And the prefabs has rigidbody2d kinematic and box collider.
Your answer
Follow this Question
Related Questions
Curve terrian sliding 0 Answers
How to keep rigid bodies objects inside a collider? 0 Answers
OnCollisionEnter2D not changing variable 0 Answers
Fast moving 2D objects workarounds and performance tradeoffs? 1 Answer
2D collision box penetration problem 0 Answers