OnTriggerEnter not working for PolygonCollider2D and BoxCollider2D - unity3d

I am running into an issue where OnTriggerEnter does not seem to be getting called. The Polygon collider should call it whenever another collider enters it, but for some reason it does not ever get called. Hoping someone could take a look at this and tell me what I am doing wrong.
PS. The
Picture of Code attached to Object 1
Object 1imgur.com/xRJrs.jpg
Object 2
Scene view with two colliders overlapping

Make sure all objects have are on layers that collide with each other. Edit > Project Settings> Physics2D > CollisionMatrix at the bottom
Make sure all Colliders are either Collider2D or just Collider, 2D does not collide with 3D.
Make sure the colliders are on Trigger (bool in Inspector) because you are using OnTriggerEnter
EDIT: Make sure you use OnTriggerEnter2D 2dPhysics dont interact with 3D physics. See 5.
3D physics dont interact with 2d physics
Good luck

Related

Prototype 1 Challenge in Unity - adding Rigidbody to game assets

I have added a Rigidbody to each of the obsticles in the Prototype 1 Challenge in Unity. The "player" (plane) game object already has a rigidBody attached. However, when I play the game the plane passes through the obsticles.
How can I make the obsticles solid. I want to use them as triggers to remove points from the player when they collide?
Suggestions:
If you use any collider as a trigger then other objects will pass through it no matter if they are colliders or triggers so just uncheck that property (in your case its box collider) uncheck all of 'is Trigger' then they will become the collider as you want them to be and after that you can have some script which detects collision to check if you collided with obstacle you remove the points from player.
Hope it works... Happy coding :)

In Unity 2D, how do I achieve Non-trigger collsion that doesn't "physically" move the rigidbodies?

I have a bullet game object and an enemy game object.
I want to have the ability of getting the collision point/contact, which's why I think I need the collider of the bullet to not be a trigger collider - this way, I want to have the bullet bounce off the enemy. At times, the bullet will need to bounce off of rectangular objects (not a problem), but I also want the bullet to bounce off of elliptic objects (the problem).
I want the bullet not to "physically" push the enemy, which is why, intuitively, I should set the bullet's collider to be a trigger collider.
When the bullet's collider is a trigger collider, I seemingly don't have a way to implement the bouncing.
But when the collider's not a trigger collider, it pushes the enemy object.
There's no code errors, but I think the code hasn't got anything to do with the problem.
I suspect the problem may have something to do with the Physics Collision Matrix.
EDIT
It seems that raycasting would be the solution to the problem, as Leoverload proposed. My problem became a different problem now, so I'll close off this thread, and open a new one.
Thanks for the help, #Leoverload ! :D
For the position of the hit it's very easy. You must have 2 colliders and 2 Rigidbody and then you can simply add a
Void OnTriggerEnter2D(Collision Coll) and inside it check for the tag : if(coll.compareTag("surface")) and inside you can get the position with collision.transform.position.
The collision matrix on the Physics menu only allows to remove Collision between certain layers, it's useful if you want the enemies not to push eachother!
If you don't want the player pushed you can change the collider to trigger, and destroy the bullet just after the collision with the same method as before with a void OnTriggerEnter2D and the compareTag. In this way it will look like it touches the enemy and explode, but it won't actually touch anything. If you want to add knockback to the player then you could do a simple AddForce based on the direction of the bullet and the work is done!
If you want to avoid the bullet to move walls you can set walls to static and it should work fine

Unity Making a prefab collide with surroundings, but not other objects of the same prefab

The picture below is my simulation, and the problem im facing is that they wont collide they way i want to.
I made them move randomly and i want this behavior.
The green balls are supposed to "bounce" off the outer grey walls, so collide with them (simulate physics)
The green balls are NOT supposed to bounce of each other, but only do triggerevents (so i know when they are on top of each other)
How do i do this. I have looked at multiple tutorials and i simply dont know what to do. As far as i understand, to make a collision, one of the objects has to have a rigidbody on, and the other a normal collider?
I have to tried to follow this overview. The balls are from the same prefab, so to get a trigger for them i have to pick either
static trigger collider, rigidbody collider trigger, or kinematic rigidbody trigger collider (as seem from the overview).
BUT if i pick any of those i cant get a collision with the walls? Do i have to do the wall collisions myself?
What you can do is make all the walls static colliders, and make a script on all the balls that check whether they hit a wall or a ball. and do actions that way.
Or
Make the walls check for a collision with the ball and add a force to the negative direction that they came from or something.(up to you how you want the balls to behave)
for example :
OnTriggerEnter(collision other)
if(other.transform.tag == Ball)
//Run Some Code here
// for example
BallRb other.GetComponent<RigidBody>();
BalRb.addForce //add the force that you want.

Why the player is walking through objects in scene?

Instead walking on the ground he walk through it same for the ship and debris the other objects. He stay on the ground on the terrain but all the other objects in the scene he walk through it.
In the past i added Mesh Collider to the ship sapceship and checked the Convex turned the Convex on so it worked fine. but now i tried to add Mesh Collider almost to everything in the scene and it didn't change anything.
The scene is not my own but there is nothing speical i think. A terrain camera and objects. I added the ThirdPersonController.
Maybe there is a way to solve it making a new script in c# ? So far i could not find solution.
Make sure the collider of the Player is big enought to hold the model. And also that the terrain collider is adjusted to the terrain.
Try to change Center(Y) value of CapsulCollider

Unity 2d 5 Collider not working

Using Unity 5.0.1f1
I'm trying to make it so that when I shoot, if it hits an invisible object it destroys it, but when it collides nothing happens. Here is the code:
void OnTriggerEnter2D(Collider2D col){
Destroy (col.gameObject);
Debug.Log ("find");
}
It's hard for me to give you an answer given the little information that you are providing. But, the most possible solutions to your problem are:
Attaching a Rigidbody component to one of the colliding objects.
Making the object which will be destroyed have a normal collider attached and the other object must have a trigger collider attached.
Make sure that all of the Colliders/Triggers and Rigidbodies you use are 2D. That is, Rigidbody2D and Collider2D. Because you are using the void OnTriggerEnter2D method.
Make sure that the colliding objects are in layers which collide with each other. You can check which layer collides with each layer by going to Edit-->Project Settings-->Physics2D (Or Physics if you end up using 3D Physics).
Hope this helps!