Collision detection
Hello! I know there is quite a few of these questions, i have looked trough atleast 3 of them and none of the solutions works in my case for some reason. Anyway here is my code:
using UnityEngine;
using System.Collections;
public class ironOre : MonoBehaviour {
private terrainMovement terrainSpeed;
private float speed;
void Start () {
terrainSpeed = GameObject.Find ("Terrain").GetComponent<terrainMovement> ();
}
void Update () {
speed = terrainSpeed.speed;
transform.Translate(0,speed*Time.deltaTime,0);
if(transform.position.y > 1.6f){
Destroy(this.gameObject);
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
speed = 0;
Debug.Log ("Iron added");
}
}
}
Even though the iron ore touches and passes trough the player, it wont debug "iron added", i have one 2D collider on the player with "Is Trigger" checked. On the iron ore i also have one 2D collider, with the "Is Trigger" unchecked. I have tried adding a rigidbody to the iron ore but with no success, i have also expiremented with the "Is Trigger" on both the player and the iron ore. I find the colission detection in unity really confunsing to be honest. All help is appretiated, thank you!
Answer by Munchy2007 · Jan 05, 2016 at 02:52 PM
You definitely need a RigidBody2D on at least one of the objects for collisions to register. When you added a rigidbody previously did you make sure that it was the 2D version?
Also your trigger function is wrong for 2D it should be
void OnTriggerEnter2D(Collider other)
{
if(other.tag == "Player")
{
speed = 0;
Debug.Log ("Iron added");
}
}
Thank you! I had forgot to put OnTriggerEnter2D and also change Collider to Collider2D. I also had to change the colission detection on the rigidbody2D to continious. But now it works as i want!
That's great glad you got it working. Could you please accept this as the answer, thanks :)
Your answer
Follow this Question
Related Questions
OnTriggerStay2D() for 2 colliders simultaneously 1 Answer
Collision With Text 0 Answers
OnCollisionEnter2D not calling, but objects are colliding. 1 Answer
Player cannot destroy enemy 1 Answer