Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 ReceptiveRaptor · Apr 25, 2020 at 02:52 PM · 2dscripting problemcolliderplayerunity 2d

How do I manage multiple colliders on a gameObject?

Hey all, first time poster, I don't know how formatting works but the preview box isn't giving me high hopes. I hope I posted this to the right section!


I'm not super new to Unity, I've been learning for maybe 6 months now.


I'm working on making my own first simple project,


Some preface information: I have been experimenting with this for a short time now (3-4 coding sessions) and originally I had 3 boxcollider2D colliders on the parent gameObject, and it was janky and I couldn't differentiate between which collider was where (without clicking on the collider) so to make things more organized I made a child object for each collider and referenced them in script using [SerializeField]


The problem: I have a script that handles all player movement (basically a movement controller) and it references 3 child gameobjects that have their own hitboxes. I've been using debuglogs to make sure the collisions work as I need them to and things are going well for the most part.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerMovement : MonoBehaviour
 {
     /*
      
          Comments for things currently working in my code:
          Forward and Backward Explosions.
          Forward Input. 
          Backward input.
          Jumping.
 
          Comments for the things currently not working in my code:
          Air movement.
          Setting player upright if not landing properly
     */
     [Header("Player Movement")]
     [SerializeField] float playerSpeed = 2f;
     [SerializeField] float jumpHeight = 2f;
     [SerializeField] float torqueSpeed = 2f;
     //
     [Header("Automated Movement")]
    // [SerializeField] float jumpSpeed = 2f;
    // [SerializeField] int pogoHeight;
     //
     [Header("Landmine Paramaters")]
     [SerializeField] float explosiveForceX = 3f;
     [SerializeField] float explosiveForceY = 3f;
     [SerializeField] float negExplosiveForceX = -3f;
     [SerializeField] float negExplosiveForceY = -3f;
 
     [Header("Colliders")]
     [SerializeField] BoxCollider2D headCollider;
     [SerializeField] BoxCollider2D bodyCollider;
     [SerializeField] BoxCollider2D pogoCol;
     //
     Rigidbody2D rb2d;
     // Start is called before the first frame update
     void Start()
     {
         rb2d = GetComponent<Rigidbody2D>();
         pogoCol = GetComponent<BoxCollider2D>();
         headCollider = GetComponent<BoxCollider2D>();
         bodyCollider = GetComponent<BoxCollider2D>();
     }
 
     // Update is called once per frame
     void Update()
     {
         GroundMovementHandler();
         AirMovementHandler();
         PogoMovementHandler();
     }
     void OnTriggerEnter2D(Collider2D collider2D)
     {
         if (collider2D.gameObject.tag == "ForwardExplosive")
         {
             ExplodeForward();
         }
         else if (collider2D.gameObject.tag == "BackwardExplosive")
         {
             ExplodeBackward();
         }
     }
     private void ExplodeForward()
     {
         Vector2 explosion = new Vector2(explosiveForceX, explosiveForceY);
         rb2d.AddForce(explosion, ForceMode2D.Impulse);
         rb2d.freezeRotation = true;
         Debug.Log("I am touching a forward explosive");
     }
     private void ExplodeBackward()
     {
         Vector2 explosion = new Vector2(negExplosiveForceX, negExplosiveForceY);
         rb2d.AddForce(explosion, ForceMode2D.Impulse);
         rb2d.freezeRotation = true;
         Debug.Log("I am touching a backward explosive");
     }
     void JumpHandler()
     {
             // Vertical = up and down
 
             // Move up and down
             float vertitalMovement = Input.GetAxisRaw("Vertical") * jumpHeight;
             vertitalMovement *= Time.deltaTime;
             transform.Translate(0, vertitalMovement, 0);
     }
     void GroundMovementHandler()
     {
             // Horizontal = left and right
 
             // Move left and right
             float horizontalMovement = Input.GetAxisRaw("Horizontal") * playerSpeed;
             horizontalMovement *= Time.deltaTime;
             transform.Translate(horizontalMovement, 0, 0);
             JumpHandler();
     }
     void AirMovementHandler()
     {
         if (pogoCol.IsTouchingLayers(LayerMask.GetMask("Ground")))
         {
    oid PogoMovementHandler()
     {
         //Debug.Log("Jump down and up by yourself");
         if (pogoCol.IsTouchingLayers(LayerMask.GetMask("Ground")))
         {
             Debug.Log("Jump up and down by yourself");
           //  transform.Translate(Vector2.up);
         }
         else if (!pogoCol.IsTouchingLayers(LayerMask.GetMask("Ground")))
         {
             return;
         }
     }
 }

The problem I am currently having with colliders is "pogoCol", in the method "EnableAirMovement()" unity is saying that while my collider is touching the ground (my player starts in a grounded position) Unity is saying that pogoCol (the collider set to touch the ground) is not actually touching the ground.


I have moved the colliders into the sprite a little so it is visually touching the ground and my Debug.Log for "Air movement enabled" is updating every frame to tell me that my collider is not working as I intended.


I'm not sure what other information I can really add to this post, my head isn't clear as it is very late at night and I feel like a bit of a zombie, if anyone can manage to make sense of this then your input is much appreciated.


I'm off to sleep and I will continue to work on a solution in the mean time and I will answer any and all relevant questions if there are gaps to fill.

:).

Comment
Add comment
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by ReceptiveRaptor · Apr 29, 2020 at 06:43 AM

I ended up fixing the issue.

I used 3 different colliders all attached to the parent (one box2d, capsule2d and a circle2d)

Comment
Add comment · Share
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

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

365 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

2D Platformer - Picking Up Items & Storing Them C# 0 Answers

2D Character Switching HELP! 0 Answers

AddForce works in Editor but not in build 2 Answers

Mouse Click Walk to Idle Animations 0 Answers

Unable to make 2D enemy zigzag : Top Down View 1 Answer


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