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