Why is OnTriggerEnter2d not being called?
I am currently working on a top down game and I have a weapon that always points towards the mouse. I want to be able to detect a collision between a ball and the tip of my weapon, but OnTriggerEnter2D is never called. Here is the components on the ball and the components on the weapon: https://imgur.com/a/MqpT7
This is in the weapon controller script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponController : MonoBehaviour {
private Vector3 mouse_pos;
private Vector3 object_pos;
private Vector3 rot;
private float angle;
private SpriteRenderer sprite;
private Animator anim;
private BoxCollider2D col;
// Use this for initialization
void Start () {
sprite = GetComponent<SpriteRenderer> ();
anim = GetComponent<Animator> ();
col = GetComponent<BoxCollider2D> ();
//col.enabled = false;
}
// Update is called once per frame
void Update () {
mouse_pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
object_pos = transform.position;
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
angle = Mathf.Atan2 (mouse_pos.y,mouse_pos.x) * Mathf.Rad2Deg + 90;
if (angle >= 0 && angle < 180) {
sprite.sortingOrder = 0;
} else {
sprite.sortingOrder = 2;
}
//transform.localPosition = new Vector3(0.25f * Mathf.Cos (angle * Mathf.Deg2Rad),0.25f * Mathf.Sin (angle * Mathf.Deg2Rad),0);
transform.rotation = Quaternion.Euler (new Vector3 (0,0,angle));
if (Input.GetMouseButtonDown (0)) {
anim.SetTrigger ("Attack");
}
}
void OnTriggerEnter2D(Collider2D collider){
print ("boom");
}
public void EnableCollider(){
//print ("Enabled");
//col.enabled = true;
}
public void DisableCollider(){
//print ("Disabled");
//col.enabled = false;
}
}
I made a ball with a Circle Collider 2D on it and tried to collide with it, but, for some reason, OnTriggerEnter2D is never called. Here is an example of blatant collision:
As you can see, they are colliding. What am I doing wrong?
Answer by OrangeHair · Apr 06, 2018 at 10:31 PM
I fixed the issue. Box Collider 2D requires a Rigidbody2D to work, so I stuck it onto the ball and the halberd and it worked.