Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 Galiza · Jul 17, 2015 at 04:00 AM · programmingswipe

Having problems with my swipe

Hi, I'm currently making a game with swipe, though sometimes the swipe doesn't work, I'll leave the code here, so please, someone, help me out.

 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 
 public class Snake : MonoBehaviour
 {
     
     //SWIPE
     private Vector3 fp;        //primeira posiçao de toque
     private Vector3 lp;        //ultima posiçao de toque
     private float dragDistance;  //distancia minima pro swipe ser marcado
     private List<Vector3> touchPositions = new List<Vector3>();  //armazena todos os toques
     
     public Sprite sprite1;
     public Sprite sprite2;
     public Sprite sprite3;
     public Sprite sprite4;
     
     private SpriteRenderer spriteRenderer; 
     // Main script for all the snake logic
     
     // Mobile controls
     //#if  UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8
     // Left button game object
     //GameObject leftButton;
     // Right button game object
     //GameObject rightButton;
     // Rotate button game object
     //GameObject upButton;
     // Down button game object
     //GameObject downButton;
     //#endif
     
     public GameObject spritehead;
     // Current Movement Direction
     // (by default it moves to the right)
     Vector2 dir = Vector2.right;
     
     // Keep Track of Tail
     List<Transform> body = new List<Transform>();
     
     // Body Prefab
     public GameObject bodyPrefab;
     
     //Tail Prefab
     public GameObject tailPrefab; //Yuri: adicionei
     
     // Bool used to store if snake has ate something
     bool ate = false;
     // Spawner GameObject
     GameObject spawner;
     // Reference to the spawneScript
     Spawner spawnerScript;
     
     // Used for player's score
     public static int score = 0;
     public int foodScore = 10;
     public int bonusScore = 50;
     
     // Use for the controls
     bool facingLeftOrRight = false;
     bool facingUpOrDown = false;
     bool left = false;//venyton: adicionei
     //COMO INICIALMENTE A SNAKE SE MOVE PRA DIREITA, right DEVE SEMPRE COMEÇAR COMO true
     bool right = true;//venyton: adicionei
     bool up = false;//venyton: adicionei
     bool down = false;//venyton: adicionei
     
     // Sounds
     public AudioClip eatSound;
     public AudioClip bonusSound;
     public AudioClip gameOverSound;
     public AudioClip trilhaSonora;
     
     //T <- TAILPREFAB
     private GameObject t;
     
     
     // Bool to say if the game is over
     public static bool gameOver = false;
     //Vector3 _origPos;
 
 
     // Use this for initialization
     void Start()
     {
 
         dragDistance = Screen.height * 10 / 100; //dragDistance e 10% da altura da tela
         spriteRenderer = GetComponent<SpriteRenderer> ();
         
         //INSTANCIA TAIL NA POSICAO DA CABEÇA
         Vector2 posTail = transform.position;
         t = (GameObject)Instantiate (tailPrefab, posTail, Quaternion.identity);
         
         // Assign the mobile controls
         //#if  UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8
         //leftButton = GameObject.Find ("arrow_left_button");
         //rightButton = GameObject.Find ("arrow_right_button");
         //downButton = GameObject.Find ("arrow_down_button");
         //upButton = GameObject.Find ("arrow_up_button");
         // #endif
         
         // Moves the Snake every 200ms
         InvokeRepeating("Move", 0.2f, 0.2f);
         
         // Match up the spawner GameObject and 
         // assign the script component
         spawner = GameObject.Find("Spawner");
         spawnerScript = spawner.GetComponent<Spawner>();
         
     }
     
     //define a direçao em que o dragao esta indo
     void SetDirection(string direction){//venyton: adicionei
         switch(direction){
         case "up":
             left = false;
             right = false;
             up = true;
             down = false;
             break;
         case "down":
             left = false;
             right = false;
             up = false;
             down = true;
             break;
         case "left":
             left = true;
             right = false;
             up = false;
             down = false;
             break;
         case "right":
             left = false;
             right = true;
             up = false;
             down = false;
             break;
         default:
             left = false;
             right = true;
             up = false;
             down = false;
             break;
         }
         
         
         if(up){
             spritehead.transform.eulerAngles = new Vector2(0, 90); 
             Debug.Log("up");
         } else if(down){
             spritehead.transform.eulerAngles = new Vector2(0, -90);
             Debug.Log("down");
         } else if(left){
             spritehead.transform.eulerAngles = new Vector2(180, 0);
             Debug.Log("left");
         } else if(right){
             spritehead.transform.eulerAngles = new Vector2(0, 0);
             Debug.Log("right");
         }
     }
     
     void Update()
     {
         //SWIPE
         foreach (Touch touch in Input.touches)  //use loop to detect more than one swipe
         { //can be ommitted if you are using lists 
             if (touch.phase == TouchPhase.Began) //check for the first touch
             {
                 fp = touch.position;
                 lp = touch.position;
                 
             }
             
             if (touch.phase == TouchPhase.Moved) //add the touches to list as the swipe is being made
             {
                 touchPositions.Add(touch.position);
             }
             
             if (touch.phase == TouchPhase.Ended) //check if the finger is removed from the screen
             {
                 //lp = touch.position;  //last touch position. Ommitted if you use list
                 fp = touchPositions[0]; //get first touch position from the list of touches
                 lp = touchPositions[touchPositions.Count - 1]; //last touch position 
                 
                 //Check if drag distance is greater than 20% of the screen height
                 if (Mathf.Abs(lp.x - fp.x) > dragDistance || Mathf.Abs(lp.y - fp.y) > dragDistance)
                 {//It's a drag
                     //check if the drag is vertical or horizontal 
                     if (Mathf.Abs(lp.x - fp.x) > Mathf.Abs(lp.y - fp.y))
                     {   //If the horizontal movement is greater than the vertical movement...
                         //CHECA A DIREÇÃO DO SWIPE E GARANTE QUE ENQUANTO ELA SE MOVE PRA DIREITA, NÃO PODE SE MOVER PRA ESQUERDA
                         if ((lp.x > fp.x) && !left)  //If the movement was to the right)
                         {   //Right swipe
                             // Debug.Log("Right Swipe");
                             spriteRenderer.sprite = sprite3;
                             dir = Vector2.right;
                             left = false;
                             right = true;
                             up = false;
                             down = false;
                         }
                         //MESMA COISA, ENQUANTO ELA SE MOVE PRA ESQUERDA, NÃO PODE SE MOVER PRA DIREITA
                         else if ((lp.x < fp.x) && !right)
                         {   //Left swipe
                             //Debug.Log("Left Swipe");
                             spriteRenderer.sprite = sprite4;
                             dir = -Vector2.right;
                             left = true;
                             right = false;
                             up = false;
                             down = false;
                         }
                     }
                     else
                     {   //the vertical movement is greater than the horizontal movement
                         //MESMA COISA, ENQUANTO ELA SE MOVE PRA CIMA, NÃO PODE SE MOVER PRA BAIXO
                         if ((lp.y > fp.y) && !down)  //If the movement was up
                         {   //Up swipe
                             spriteRenderer.sprite = sprite1;
                             dir = Vector2.up;
                             left = false;
                             right = false;
                             up = true;
                             down = false;
                             //Debug.Log("Up Swipe");
                         }
                         //MESMA COISA, ENQUANTO ELA SE MOVE PRA BAIXO, NÃO PODE SE MOVER PRA CIMA
                         else if((lp.y < fp.y) && !up)
                         {   //Down swipe
                             //Debug.Log("Down Swipe");
                             spriteRenderer.sprite = sprite2;
                             dir = -Vector2.up;
                             left = false;
                             right = false;
                             up = false;
                             down = true;
                         }
                     }
                 }
             }
             
             #region MyRegion
             // Mobile control logic
             // Note the two bools (facingLeftOrRight and facingUpOrDown) 
             // prevents the snake from colliding with itself in an unwanted manner
             //#if  UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8
             // if click or tap happens
             //        if (Input.GetMouseButtonDown(0))
             //        {
             //            Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
             //            // checks if an object has been selected
             //            Collider2D hitCollider = Physics2D.OverlapPoint(mousePosition);  
             //            // button logic
             //            if (hitCollider)
             //            {
             //                if (hitCollider.transform == rightButton.transform)
             //                {
             //                    if (!facingLeftOrRight)
             //                    {
             //                        spriteRenderer.sprite = sprite3;
             //                        dir = Vector2.right;
             //                        left = false;
             //                        right = true;
             //                        up = false;
             //                        down = false;
             //                    } 
             //                } else if (hitCollider.transform == downButton.transform)
             //                {
             //                    if (!facingUpOrDown)
             //                    {
             //                        spriteRenderer.sprite = sprite2;
             //                        dir = -Vector2.up;
             //                        left = false;
             //                        right = false;
             //                        up = false;
             //                        down = true;
             //                    }
             //                } else if (hitCollider.transform == leftButton.transform)
             //                {
             //                    if (!facingLeftOrRight)
             //                    {
             //                        spriteRenderer.sprite = sprite4;
             //                        dir = -Vector2.right;
             //                        left = true;
             //                        right = false;
             //                        up = false;
             //                        down = false;
             //                    }
             //                } else if (hitCollider.transform == upButton.transform)
             //                {
             //                    if (!facingUpOrDown)
             //                    {
             //                        spriteRenderer.sprite = sprite1;
             //                        dir = Vector2.up;
             //                        left = false;
             //                        right = false;
             //                        up = true;
             //                        down = false;
             //                    }
             //                }
             //
             //            }
             //        }
             //        
             //#else 
             #endregion
             #if UNITY_PC
             Desktop controls
                 if (Input.GetKey(KeyCode.RightArrow))
             {
                 if (!facingLeftOrRight)
                 {
                     spriteRenderer.sprite = sprite3;
                     dir = Vector2.right;
                     left = false;
                     right = true;
                     up = false;
                     down = false;                
                 } 
             } 
             else if (Input.GetKey(KeyCode.DownArrow))
             {
                 if (!facingUpOrDown)
                 {
                     spriteRenderer.sprite = sprite2;
                     dir = -Vector2.up;
                     left = false;
                     right = false;
                     up = false;
                     down = true;
                 }
             } 
             else if (Input.GetKey(KeyCode.LeftArrow))
             {
                 if (!facingLeftOrRight)
                 {
                     spriteRenderer.sprite = sprite4;
                     dir = -Vector2.right;
                     left = true;
                     right = false;
                     up = false;
                     down = false;
                 }
             } 
             else if (Input.GetKey(KeyCode.UpArrow))
             {
                 if (!facingUpOrDown)
                 {
                     spriteRenderer.sprite = sprite1;
                     dir = Vector2.up;
                     left = false;
                     right = false;
                     up = true;
                     down = false;
                 }
             }
             
             #endif
             
             
         }
         
         if (body.Count == 0)
         {
             t.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((transform.position.y - t.transform.position.y), (transform.position.x - t.transform.position.x)) * Mathf.Rad2Deg);
         }
         else
         {
             t.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((body.Last().position.y - t.transform.position.y), (body.Last().position.x - t.transform.position.x)) * Mathf.Rad2Deg);
         }
     }
     
     void Move()
     {
         // Save current position 
         Vector2 v = transform.position;
         
         //ENQUANTO SNAKE NAO COMER NENHUMA FOOD, A POSICAO DO RABO CONTINUA A MESMA
         if(body.Count == 0)
         {
             t.transform.position = v;
         }
         
         // Move head into new direction
         transform.Translate (dir);
         
         
         
         // Insert new element if the snake has eaten
         if (ate) {
             // Load Prefab
             GameObject g = (GameObject)Instantiate (bodyPrefab, v, Quaternion.identity);
             
             // Keep track of it the tail list
             body.Insert (0, g.transform);
             
             // Reset the ate bool
             ate = false;
         }
         // Is there a tail
         else if (body.Count > 0) {
             // Move last Tail to where the Head was
             
             //ATUALIAZA A POSICAO DO RABO PARA A POSICAO DO ULTIMO "CORPO"
             t.transform.position = body.Last().position;
             
             body.Last ().position = v;
             
             
             // Add to front of list and remove from the back
             body.Insert (0, body.Last ());
             body.RemoveAt (body.Count - 1);
         }
     }
     
     //    public void Rotate()
     //        {
     //        Quaternion r = Quaternion.LookRotation (Vector3.forward, SetDirection);
     //    
     //        }
     //    
     
     void OnTriggerEnter2D(Collider2D coll)
     {
         // If the snake eats food
         if (coll.name.StartsWith("Food"))
         {   
             // Make the snake longer
             ate = true;   
             // Destroy food
             Destroy(coll.gameObject);
             // Add to score
             score += foodScore;
             // Spawn more food
             spawnerScript.SpawnFood();
             // Play eat sound
             GetComponent<AudioSource>().PlayOneShot(eatSound);
             // If the snake eats a bonus
         } else if (coll.name.StartsWith("Bonus"))
         {
             // Make the snake longer
             ate = true;
             // Destroy bonus
             Destroy(coll.gameObject);
             // Add to score
             score += bonusScore;
             // Play bonus sound
             GetComponent<AudioSource>().PlayOneShot(bonusSound);
         }
         // Collided with Tail or a Border
         else
         {
             // Set gameOver to true
             gameOver = true;
             // Stop the snake from moving
             CancelInvoke();
             // Play gameOverSound
             GetComponent<AudioSource>().PlayOneShot(gameOverSound);
         }
     }
 }
 

Comment
Add comment · Show 1
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 meat5000 ♦ · Jul 16, 2015 at 11:44 PM 0
Share

A lot of code and a very small amount to go on.

Any errors in the log? Have you used Debug.Log() to see whats going on?

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Android wear swipe to dismiss 0 Answers

I made a better shader how do i fix[add _Shadow Strength]help???>Sorry that im asking for to much 1 Answer

Unity swipe controlls mobile 0 Answers

Bool is not turning false 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