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 9182justin · Feb 09, 2014 at 12:48 AM · ballpongpaddle

Scoring not working

My ball hits the right wall it gives the point to player 2 and if it hits the left wall it also give the point to player 2.

This is the code for it:

 #pragma strict
 
 static var playerScore01 : int = 0;
 static var playerScore02 : int = 0;
 
 var theSkin : GUISkin;
 
 static function Score (wallName : String) {
     if (wallName == "rightWall")
     {
         playerScore01 += 1;
     }
     else {
         playerScore02 += 1;
     }
     Debug.Log("Player Score 1 is " + playerScore01);
     Debug.Log("Player Score 2 is " + playerScore02);
 }
 
 function OnGUI () {
     GUI.skin = theSkin;
     GUI.Label (new Rect (Screen.width/2-150-12, 25, 100, 100), "" + playerScore01);
     GUI.Label (new Rect (Screen.width/2+150-12, 25, 100, 100), "" + playerScore02);
 }
Comment
Add comment · Show 4
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 Mike-Geig ♦♦ · Feb 09, 2014 at 12:56 AM 1
Share

What doesn't work about it?

avatar image getyour411 · Feb 09, 2014 at 01:07 AM 0
Share

It gives all points to player 2

avatar image tayloredgames · Feb 09, 2014 at 01:16 AM 0
Share

By the sound of things wallName always equals "rightWall", your parent function might not be forwarding the correct information. Can you Debug.Log wallName before the if statement and see what that outputs?

avatar image 9182justin · Feb 09, 2014 at 10:07 PM 0
Share

Thanks for the idea tayloredgames. I have tried that but both come up as being player 2's score. As you said, it seems to always equel rightWall but I can't figure out why. The code up there is Game$$anonymous$$anager.js and bellow I have SideWalls.js. SideWall is for detecting the ball hitting the side and Game$$anonymous$$anager is for allocating scores.

 #pragma strict
 
 function OnTriggerEnter2D (hitInfo : Collider2D) {
     if (hitInfo.name == "Ball")
     {
         var wallName = transform.name;
         Game$$anonymous$$anager.Score (wallName);
         
         hitInfo.gameObject.Send$$anonymous$$essage ("ResetBall");
     }
 }

I also have the code from GameSetup.js. It is responsible for setting up the hit boxes for the aspect ratio through a trigger event.

 #pragma strict
 
 //Reference the camera
 var mainCam : Camera;
 
 //Reference the colliders we are going to adjust
 var topWall : BoxCollider2D;
 var bottomWall : BoxCollider2D;
 var leftWall : BoxCollider2D;
 var rightWall : BoxCollider2D;
 
 //Reference the players
 var Player01 : Transform;
 var Player02 : Transform;
 
 function Update () { //Only set this to Update if you know the screen size can change during a playsession.
 
     //$$anonymous$$ove each wall to its edge location:
     topWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2f, 0f, 0f)).x, 1f);
     topWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3 ( 0f, Screen.height, 0f)).y + 0.5f);
     
     bottomWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2, 0f, 0f)).x, 1f);
     bottomWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3( 0f, 0f, 0f)).y - 0.5f);
     
     leftWall.size = new Vector2(1f, mainCam.ScreenToWorldPoint(new Vector3(0f, Screen.height*2f, 0f)).y);;
     leftWall.center = new Vector2(mainCam.ScreenToWorldPoint(new Vector3(0f, 0f, 0f)).x - 0.5f, 0f);
     
     rightWall.size = new Vector2(1f, mainCam.ScreenToWorldPoint(new Vector3(0f, Screen.height*2f, 0f)).y);
     rightWall.center = new Vector2(mainCam.ScreenToWorldPoint(new Vector3(Screen.width, 0f, 0f)).x + 0.5f, 0f);
 
     //$$anonymous$$ove the players to a fixed distance from the edges of the screen:
     Player01.position.x = mainCam.ScreenToWorldPoint (new Vector3 (75f, 0f, 0f)).x;
     Player02.position.x = mainCam.ScreenToWorldPoint (new Vector3 (Screen.width -75f, 0f, 0f)).x;
 }

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by Konbex · Feb 09, 2014 at 10:27 PM

Try using two if statements instead of a single if/else.

Also, sorry for the stupid question but have you checked to make sure the walls have the correct names?

Comment
Add comment · Show 1 · 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
avatar image 9182justin · Feb 09, 2014 at 11:20 PM 1
Share

Thank you $$anonymous$$onbex, that was the problem. I had the left wall in both the right wall and left wall slot. It is working now.

avatar image
0

Answer by MaGuSware™ · Feb 09, 2014 at 11:48 PM

The variable names do not equal the object name.

What you are doing is trying to compare the object name of the collided wall with a string version of the variable name, not with what the wall is actually called.

I mean, I highly doubt the walls in your object hierarchy are called "rightWall" and "leftWall", right?

In your object hierarchy, call your walls something like "Left Wall" and "Right Wall" if you haven't already, then change your if/else statement to this:

 if(wallName == "Right Wall")
 {
     playerScore01 += 1;
 }
 else if (wallName == "Left Wall")
 {
     playerScore02 += 1;
 }
Comment
Add comment · Show 3 · 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
avatar image 9182justin · Feb 10, 2014 at 06:16 PM 1
Share

They were and it was solved. I put leftWall in the place of rightWall on the GameSetup. alt text

avatar image MaGuSware™ · Feb 11, 2014 at 03:47 PM 0
Share

You so silly :P

avatar image 9182justin · Feb 11, 2014 at 06:14 PM 0
Share

I know. I focused too much on it being the code.

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

22 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

Related Questions

Simple Collision Deflection (Pong) 1 Answer

Prevent ball from going straight on x and y axis 2 Answers

What is the best way to move a paddle accurately in a circle? 2 Answers

Ball disappears after invoking a method 0 Answers

Ball Dropping, once hit make it go diagonal 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