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 /
  • Help Room /
avatar image
0
Question by Captain_Dando · Mar 05, 2016 at 06:05 PM · c#raycasthit2draycastall

RaycastAll from prefab is not picking up a collider from another prefab

Hi Everyone, I've got a fighting game I'm working on, and I'm stuck at the moment with RayCastAll and I'm not sure what's causing the problem. I have a prefab called "punk" in which you can select another gameObject as an opponent. At the second last frame of an animation named "punch" (which you can see below) I run a function named "PunchHit" to signify the exact moment the punch potentially lands on an opponent. it goes as follows:

 void PunchHit(){
         
         
         var xPos = transform.position.x;
         var yPos = transform.position.y;
         
         // This line renders fine, no matter the gameObjects' facing direction, so it is definitely striking in the right direction
         Debug.DrawLine(Pos1,Pos2, Color.white, 1, false);
         RaycastHit2D[] hits = Physics2D.RaycastAll(Pos1, Pos2);
         
         foreach(RaycastHit2D hit in hits){
             if (hit.collider != null){
                 if (hit.collider.gameObject == opponent) {
                     if( hit.collider.gameObject.tag == "Fighter"){
                     
                         var enemy = hit.collider.gameObject;
                         Debug.Log("I am " + gameObject.name + " and I hit "+hit.collider.gameObject.name);
                         enemy.GetComponent<Animator>().Play("smacked", -1,  0f);
                         enemy.GetComponent<Rigidbody2D>().AddForce(new Vector2(1500 * direction, 2500));
                         
                         AudioSource audio = gameObject.GetComponent<AudioSource>();
                         audio.Play();
                     }
                 }
             }    
             else{
             }
         }    
     }
 

For some strange reason, only one of the punks is strike-able. If the second punk were to increase his distance to the first, he can even strike the first without hitting him, which leads me to think that the punk registers the raycast striking from itself as striking the other punk. for all intents and purposes, however, the second punk might as well not exist to the first, none of it's rays register it at all. In my physics2d settings I've created 2 layers called player 1 and player 2 and even casting with that mask it does nothing. am I missing something obvious or is the engine just glitching out?

Here you can see the problem in action

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 Captain_Dando · Mar 06, 2016 at 07:48 AM

Solved it! I didn't realize that there was a function named Debug.DrawRay. in essence, I didn't realize that rays and line get their coordinates differently. The line I drew for testing purposes had a specific point in local space as it's second parameter, where as with drawray it is a direction. knowing this, I was able to fix the trajectory of the punch, as before the punch from one punk was going in a completely wild direction.

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

35 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

Related Questions

Is there any way how to do raycasts like this? 0 Answers

2D Raycast reflection only changes hit.normal 0 Answers

Finding unique interacting function within gameObject 0 Answers

Raycast2D not working like it should be. 0 Answers

Strange Raycast problem 0 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