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 shawnatkidzpace · Jun 11, 2019 at 06:32 PM · c#androidmobiletouchmulti-touch

Multi-touch game can only shoot 1 ball at a time

Fairly new to Unity(still suck at coding!) but loving how easy it is to make games. Unity 2019.1.3f1

I am creating a 4-player (same screen) basketball game for Android where the players swipe to shoot balls at the net in the middle of the screen. My script works for shooting a single ball but as soon as there is 2 fingers on the screen it doesn't work or seemingly the first touch gets overridden.

I have tried doing this many different ways, the most current I am trying to create a for loop copied directly from the documentation. I have tried putting a script on each one of the balls and I have also tried creating a singular script that controls all the balls.

I have added fingerId checks and raycast to get the gameobject to make sure the touch points only shoot the balls they are touching but still only 1 ball can be shot at a time. Not sure what else to do to get this working. Attached my whole script that I was putting on each ball.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class TouchControls1 : MonoBehaviour
 {
     Transform lookatTarget;
     Rigidbody rb;
     TrailRenderer ballTrail;
     AudioSource audioSource;
     public Color playerColor = Color.red;
     //public AudioClip ballBounce;
     //public AudioClip rimHit;
     Vector2 startTouch;
     Vector3 startPos;
     Vector2 direction;
     Vector3 endPos;
     float startTime;
     float endTime;
     float swipeTime;
     private Camera cam;
     Vector3 directionVector;
     public Vector3 startVector;
     public Vector3 startRotation;
     float thrust;
     public float thrustMultiplier = 900.0f;
     public float waitTrimer = 1f;
     bool colliding = false;
     bool resetingBall = false;
     bool ballShot = false;
     bool goal1 = false;
     bool goal2 = false;
     int score = 0;
     public Text scoreText;
     int shotsOnGoal = 0;
     public Text shotsText;
     GameObject touchedObject;
     bool touched = false;
     public float heightMultiplier;
 
     private void Start()
     {
         cam = Camera.main;
         rb = this.gameObject.GetComponent<Rigidbody>();
         lookatTarget = this.gameObject.GetComponent<Transform>();
         ballTrail = this.gameObject.GetComponent<TrailRenderer>();
         audioSource = this.gameObject.GetComponent<AudioSource>();
         ballTrail.material.color = playerColor;
         scoreText.text = score.ToString();
         shotsText.text = shotsOnGoal.ToString();
         scoreText.color = playerColor;
         shotsText.color = playerColor;
     }
     private void Update()
     {
         for (int i = 0; i < Input.touchCount; i++)
         {
             if (Input.touchCount > 0)
             {
                 Touch touch = Input.GetTouch(i);
                 int fingerID = touch.fingerId;
 
                     switch (touch.phase)
                     {
                         case TouchPhase.Began:
                         //When a touch has first been detected, record the starting position
                         Ray ray = Camera.main.ScreenPointToRay(touch.position);
                         RaycastHit hit;
 
                         if (Physics.Raycast(ray, out hit))
                         {
                             touchedObject = hit.transform.gameObject;
                             touched = true;
                             //print("touch = " + touch.fingerId);
                         }
                         // Record initial touch position.
                             startTouch = touch.position;
                             startPos = Camera.main.ScreenToWorldPoint(Input.touches[i].position);
                             startTime = Time.time;
                             //set start rotation
                             transform.eulerAngles = startRotation; //reset x, z rotation, only use y rotation
 
                             if (ballShot == false)
                             {
                                 colliding = false;
                                 resetingBall = false;
                             }
                             break;
 
                         //Determine if the touch is a moving touch
                         case TouchPhase.Moved:
                             // Determine direction by comparing the current touch position with the initial one
                             //direction = touch.position - startPos;
                             direction = touch.position - startTouch;
                             break;
 
                         case TouchPhase.Ended:
                         int fingerTouch = Input.GetTouch(i).fingerId;
                         if (fingerTouch == fingerID)
                         {
                             //print("fingerTouch = " + fingerTouch);
 
                             if (touchedObject == this.gameObject)
                             {
                                 // Report that the touch has ended when it ends
                                 endPos = Camera.main.ScreenToWorldPoint(Input.touches[i].position);
                                 endTime = Time.time;
                                 ShootBall();
                             }
                         }
                             break;
                     }
                 }
             }
         }
     
     
     void ShootBall()
     {
         swipeTime = endTime - startTime;
         ballShot = ballTrail.emitting = true;
         thrust = direction.magnitude / thrustMultiplier; //calculate thrust
         print("thrust = " + thrust);
         touched = rb.isKinematic = false;
         //add thrust
         rb.velocity = new Vector3(direction.x * thrust, (swipeTime / thrust) * heightMultiplier, direction.y * thrust);
         print("rb.velocity = " + rb.velocity);
         shotsOnGoal++;
         shotsText.text = shotsOnGoal.ToString();
     }
     void OnCollisionEnter(Collision collision)
     {
         colliding = true;
 
         if (collision.gameObject.name == "Floor")
         {
             /*audioSource.clip = ballBounce;
             audioSource.Play();*/
             StartCoroutine("ResetBall");
         }
 
         if (collision.gameObject.name == "Rim")
         {
             /*audioSource.clip = rimHit;
             audioSource.Play();*/
         }
 
     }
     private void OnTriggerEnter(Collider other)
     {
         colliding = true;
 
         if (other.gameObject.name == "KillZ")
         {
             StartCoroutine("ResetBall");
         }
 
         if (other.gameObject.name == "Goal (1)")
         {
             goal1 = true;
         }
 
         if (other.gameObject.name == "Goal (2)")
         {
             goal2 = true;
         }
 
         if (goal1 && goal2 == true)
         {
             score++;
             scoreText.text = score.ToString();
         }
     }
     IEnumerator ResetBall()
     {
         if (colliding == true && resetingBall == false)
         {
             resetingBall = true;
             yield return new WaitForSeconds(waitTrimer);
             rb.isKinematic = true;
             ballTrail.emitting = false;
             transform.position = startVector;
             transform.rotation = Quaternion.identity;
             ballShot = false;
             goal1 = false;
             goal2 = false;
         }
     }
 }
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

0 Replies

· Add your reply
  • Sort: 

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

775 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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 pick up an object when touching a button(Mobile) 0 Answers

Read and Write Textfile on mobile (C# Unity ) 0 Answers

Space Shooter Mobile Touch Controls Issue 1 Answer

Simple touch counting program not working 0 Answers

Detect how long a tap is held 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