Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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 Ian9921 · Jan 24, 2018 at 06:17 AM · c#collisionpositiondebugcoordinates

Locations not registering as equal

Okay, I'm making a Pong game. I am doing most of the code from scratch. At the moment there is only one Paddle. The issue is, the ball doesn't seem to register when it hits the Paddle. Here is my code for the ball:`using UnityEngine; using System.Collections;

public class BounceScript : MonoBehaviour {

 public float xPosition = -9;
 public float xDiffer = 0;
 public float latSpeed = 10.0f;
 public float vertSpeed = 10.0f;
 public float yBound = 10.0f;
 public float xBound = 10.0f;
 PlayerControl reference;
 private Vector2 vel;
 private Rigidbody2D rb2d;

 // Use this for initialization
 void Start () {
     rb2d = GetComponent<Rigidbody2D> ();

     //reference = GameObject.Find ("PlayerSprite").GetComponent<PlayerControl>().yPos;
 }
 
 // Update is called once per frame
 void Update () {
     var pos = transform.position;
     if (pos.y > yBound) {
         pos.y = yBound;
         vertSpeed = -vertSpeed;
     }else if (pos.y < -yBound) {
         pos.y = -yBound;
         vertSpeed = -vertSpeed;
     }
     if (pos.x > xBound) {
         pos.x = xBound;
         latSpeed = -latSpeed;
     }else if (pos.x < -xBound) {
         pos.x = -xBound;
         latSpeed = -latSpeed;
     }
     if (pos.y >= (PlayerControl.yPos - .48) && pos.y <= (PlayerControl.yPos + .48)) {
         Debug.Log("Y Accurate");
         if (pos.x == (-8.25)) {
             Debug.Log ("Player Hit");
         }
     }
     transform.position = pos;

     vel = rb2d.velocity;
     vel.y = vertSpeed;
     vel.x = latSpeed;
     rb2d.velocity = vel;
     }
 }

And for the Paddle:

 using UnityEngine;
 using System.Collections;
 
 public class PlayerControl : MonoBehaviour {
 
     static public float xPos;
     static public float yPos;
     public KeyCode upKey = KeyCode.W;
     public KeyCode downKey = KeyCode.S;
     public float speed = 10.0f;
     public float yBound = 10.0f;
     private Rigidbody2D rb2d;
 
     // Use this for initialization
     void Start () {
         rb2d = GetComponent<Rigidbody2D> ();
     }
     
     // Update is called once per frame
     void Update () {
         var vel = rb2d.velocity;
         if (Input.GetKey (upKey)) {
             vel.y = speed;
         }else if (Input.GetKey (downKey)) {
             vel.y = -speed;
         }else if (!Input.anyKey) {
             vel.y = 0;
         }
         rb2d.velocity = vel;
 
         var playerPos = transform.position;
         if (playerPos.y > yBound) {
             playerPos.y = yBound;
         }else if (playerPos.y < -yBound) {
             playerPos.y = -yBound;
         }
         transform.position = playerPos;
         yPos = playerPos.y;
         xPos = playerPos.x;
     }
 
 }
 

Were as I get "Y accurate" consistently, "Player Hit" does not get triggered once. Any advice would be appreciated.

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 Kishotta · Jan 24, 2018 at 06:28 AM

This is an issue with how floating point numbers are handled in computers. Any float value that isn't a power of two (or some multiple of a power of two) cannot be accurately represented. That's why on old calculators if you type "1 / 10" you get 1.000000000001. As such, unless you have a very good reason to, you should never check for equality on floating point numbers. They will almost never be equal.

You can use Mathf.Approximately to do your check without changing any of your logic. It checks that the two numbers are within a small amount (usually, the smallest representable amount) of one another.

Additionally, in C# note that 3.14 is a double type and 3.14f is a float type. There's rarely a reason to use doubles in Unity and the Mathf library functions only work on float types.

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

453 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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

how to click on some position and get response on other position? 1 Answer

how to make my enemy stop walking? 1 Answer

Multiple Cars not working 1 Answer

I want to teleport my player to a random(from these 4) spot on the x axis, but it doesn't work. 3 Answers

Trouble with positions of vertices 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