2D Player can not detect collectible / power up Game Object [Version 2019.5f.01]
I am trying to get a player to pick up an object in a 2D environment. The player can move onto the object, but the object is not registered as being picked up. The game runs without errors.
The pickup script looks like this:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PickUp : MonoBehaviour
 {
     public GameObject pickupEffect;
 
     void onTriggerEnter2D(Collider2D other)
     {
         if (other.CompareTag("Player"))
         {
             PickUpAction(other);
         }
     }
 
     void PickUpAction(Collider2D other)
     {
         Debug.Log("Picked up powerup");
 
         //Instantiate(pickupEffect, transform.position, transform.rotation); (not yet implemented)
 
         other.transform.localScale *= 2;
 
         Destroy(gameObject);
     }
 }
 
I checked the coin objects in the Unity Playground to see if there was anything I missed. It looks like there isn't.
The object in my game has a Circle2D collider that fits the sprite and has On Trigger checked. The player has a Box2D collider that fits it and is tagged as "Player" in the drop-down menu.
What am I missing?
For reference, this is the Playground collectable script:
 using UnityEngine;
 using System.Collections;
 
 [AddComponentMenu("Playground/Attributes/Collectable")]
 public class CollectableAttribute : MonoBehaviour
 {
     public int pointsWorth = 1;
     
     private UIScript userInterface;
 
     private void Start()
     {
         // Find the UI in the scene and store a reference for later use
         userInterface = GameObject.FindObjectOfType<UIScript>();
     }
 
 
     //This will create a dialog window asking for which dialog to add
     private void Reset()
     {
         Utils.Collider2DDialogWindow(this.gameObject, true);
     }
 
 
     // This function gets called everytime this object collides with another
     private void OnTriggerEnter2D(Collider2D otherCollider)
     {
         string playerTag = otherCollider.gameObject.tag;
 
         // is the other object a player?
         if(playerTag == "Player" || playerTag == "Player2")
         {
             if(userInterface != null)
             {
                 // add one point
                 int playerId = (playerTag == "Player") ? 0 : 1;
                 userInterface.AddPoints(playerId, pointsWorth);
             }
 
             // then destroy this object
             Destroy(gameObject);
         }
     }
 }
 
Thank you for your help!
Answer by BBIT-SOLUTIONS · Feb 03, 2020 at 02:50 PM
Does one of your GameObjects has a Rigidbody2D assigned? Because for collision detection at least one of your objects needs one.
Your answer
 
 
             Follow this Question
Related Questions
OnTriggerEnter gets called only once 1 Answer
2D colliders doesnt work with Gravity Scale = 0 0 Answers
Unable to stop animation upon collision (2d, animation, rigidbody) 0 Answers
No overload for method. (Question) 0 Answers
Collision check 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                