• 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
Question by FSanders · Jun 24, 2015 at 10:58 AM · c#android2dtouch

Placing a Rect and detecting a Touch/Tap

Hi guys, I'm in the progress of creating my first 2D Game.

Since I'm both new to Unity and Android development I have some issues with Touch detection.

When I create a Rect with a height of 50px and a width of 100px, it seems as if the Rect is only registering Touch on the leftmost ~10px or so.

Here is my example code:

 using UnityEngine;
 using System.Collections;

 public class StartUpScript : MonoBehaviour {
 Rect buttonPLAY = new Rect(80, 340, 100, 50);
 
 // Use this for initialization
     void Start () {}
 
     // Update is called once per frame
     void Update () {
         if (Input.touchCount > 0) {
                 if (buttonPLAY.Contains(Input.GetTouch(0).position)) {
                 Application.LoadLevel("GameScreen");
                 }
                 
         }
 }


Also when it works, it feels kinda weird. As if he would fire events more than once or only if you press a certain amount of time. Is there another way to detect a single TAP anywhere on the specified Rect? As I understand it, "Update" is called once per frame. Might this be the problem?

Thanks for the help :)

Comment

People who like this

0 Show 2
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 hexagonius · Jun 25, 2015 at 11:57 AM 1
Share

Can't help you with why the area should be smaller than it is.

For the touch though, it's indeed triggered every frame because you only check if touchCount > 0, which is the case as long as the finger is on screen.

Check

 if (Input.GetTouch(0).phase == TouchPhase.Began){
 ...
 }
avatar image FSanders · Jun 25, 2015 at 10:59 PM 0
Share

Thanks mate! That works :)

1 Reply

· Add your reply
  • Sort: 
avatar image

Answer by Clint.Carpenter · Jun 26, 2015 at 02:11 AM

It might be related to the coordinates of the shape and the touch. Try this:

 if (buttonPLAY.Contains(
     Camera.main.ScreenToWorldPoint(
         Input.GetTouch(0).position)) {
 ...
 }
Comment

People who like this

0 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 hexagonius · Jun 26, 2015 at 07:26 AM 0
Share

I don't think that is correct. in the docs the example uses Input.mousePosition, which is in pixel coordonates. touch.position is too.

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Why does my app function correctly in Unity Remote but not compiled as an app? 0 Answers

follow touch input whist falling 0 Answers

The type or namespace name `Events' does not exist in the namespace `TouchScript' 1 Answer

TouchCount always > 0 on Android 1 Answer

UI Prefab not instantiating on build for Android. 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