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 engineerAmirHosein · Aug 24, 2017 at 12:13 AM · 2d game

2D Object Following Finger

hi. i have this code to controll my game object by finger in mobile phone. but it works only on objects that they have 3D Collider . my game is 2D and objects have 2DCollider . what should i do to fix it?

     //flag to check if the user has tapped / clicked.
     //Set to true on click. Reset to false on reaching destination
     private bool flag = false;
     //destination point
     private Vector2 endPoint;
     //alter this to change the speed of the movement of player / gameobject
     public float duration = 0f;
     //vertical position of the gameobject
     private float xAxis;
 
 
     void Start()
     {
         //save the y axis value of gameobject
         xAxis = gameObject.transform.position.z;
     }
 
     // Update is called once per frame
     void Update()
     {
         
         //check if the screen is touched / clicked
         if ( (Input.GetMouseButton(0)))
         {
             //declare a variable of RaycastHit struct
             RaycastHit hit;
             //Create a Ray on the tapped / clicked position
             Ray ray;
             //for unity editor
             #if UNITY_EDITOR
             ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             //for touch device
             #elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
             ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
             #endif
 
             //Check if the ray hits any collider
             if (Physics.Raycast(ray, out hit))
             {
                 //set a flag to indicate to move the gameobject
                 flag = true;
                 //save the click / tap position
                 endPoint = hit.point;
                 //as we do not want to change the y axis value based on touch position, reset it to original y axis value
                 endPoint.x = xAxis;
                 //Debug.Log(endPoint);
             }
 
         }
         //check if the flag for movement is true and the current gameobject position is not same as the clicked / tapped position
         if (flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
         { //&& !(V3Equal(transform.position, endPoint))){
             //move the gameobject to the desired position
             gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, endPoint, 1 / (duration * (Vector3.Distance(gameObject.transform.position, endPoint))));
         }
         //set the movement indicator flag to false if the endPoint and current gameobject position are equal
         /*else if (flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
         {
             flag = false;
             Debug.Log("I am here");
         }*/
 
     }
 
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

Answer by SneakyLeprechaun · Aug 24, 2017 at 02:18 AM

I'm pretty sure that Raycasts have a completely different version (raycast2d) for 2D games, and the 3D raycast probably doesn't interact with the 2D colliders. To solve your issue instead of raycasting you could instead try Physics2D.OveralpCircle which gets all objects within a radius of a point.

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

73 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

Related Questions

How to click and drag images into multiple slots? 0 Answers

2D Top Down SmokeBomb 0 Answers

Moving a 2d player and preventing them from passing through objects 1 Answer

Having 2D Character fall when in collision 0 Answers

respawn all after player die or doing checkpoint 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