Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by TheFold · Jun 16, 2014 at 11:07 AM · 2dcollidermultiple

OnTriggerStay2D not working

I am currently prototyping some things and one of them is to have objects that can be dragged and dropped into a box.

I have gotten the mechanics working for dragging the objects around and then snapping them to the centre of an area provided they have passed through the area's collider.

However what I'm having trouble with is if I have more than one of the same type of object. They will individually snap OK, but I can't seem to figure out a way of making it so once an object has snapped into a box, no more objects can snap into the box until it's empty again.

I am trying to make my code as neat as possible and have managed to get the logic down from multiple files into just 2. I did read another question where it was suggested to use OnTriggerStay2D to turn off the collider for the duration, but what seems to be happening is that when the object snaps into the box, an OnTriggerExit2D call is being made, despite the object being in the centre of the bounding box.

I'm fairly new to Unity so I'm happy for suggestions on making my existing code more efficient if possible.

slotBehaviour.cs:

 using UnityEngine;
 using System.Collections;
 
 public class slotBehaviour : MonoBehaviour {
 
     private bool slotEmpty;
     public static Vector2 box;
     public static bool collided;
     public static string boxTag;
 
     // Use this for initialization
     void Start () {
         slotEmpty = true;
     }
     
     // Update is called once per frame
     void Update () {
 
     }
     
     void OnTriggerEnter2D (Collider2D col) {
 
         if (col.gameObject.tag == gameObject.tag && slotEmpty == true) {
             Debug.Log (col.gameObject.tag + " Entered");
             boxTag = gameObject.tag;
             collided = true;
             box = gameObject.transform.position;
         }
     }
 
     void OnTriggerStay2D (Collider2D col) {
         Debug.Log ("Still here...");
     }
 
     void OnTriggerExit2D (Collider2D col) {
 
         Debug.Log (col.gameObject.tag + " Exited");
         collided = false;
     }
 
 }
 

componentMovement:

 using UnityEngine;
 using System.Collections;
 
 public class componentMovement : MonoBehaviour {
 
     private Vector2 componentPosition;
     private Vector2 offset;
     private bool inSlot;
 
     // Use this for initialization
     void Start () {
 
     }
     
     // Update is called once per frame
     void Update () {
 
     }
 
     void OnMouseDrag() {
         Vector2 curScreenPoint = new Vector2 (Input.mousePosition.x, Input.mousePosition.y);
         Vector2 curPosition = Camera.main.ScreenToWorldPoint (curScreenPoint);
         transform.position = curPosition;
 
         if (gameObject.rigidbody2D.isKinematic == true) {
             gameObject.rigidbody2D.isKinematic = false;
             inSlot = false;
         }
     }
 
     void OnMouseUp() {
 
         if (inSlot == false && gameObject.rigidbody2D.isKinematic == false) { 
 
             if (slotBehaviour.collided == true && slotBehaviour.boxTag == gameObject.tag) {
                 transform.position = slotBehaviour.box;
                 gameObject.rigidbody2D.isKinematic = true;
                 inSlot = true;
             }
         }
     }
 }

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Graham-Dunnett ♦♦ · Jun 16, 2014 at 11:07 AM 0
Share

Please go back and edit the post so your code is formatted correctly.

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

2D shooter, 3d or 2d colliders? 2 Answers

Spike Player Die 0 Answers

Generating a pixel-perfect collider for an object at runtime 1 Answer

Is this normal behavior for edge collider triggers (2D)? 1 Answer

OnCollisionEnter2D not calling properly 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges