Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 zombiewalker · Mar 23, 2012 at 03:35 PM · touchsmoothdamp

Why smoothdamp can not work with TouchPhase.Ended?

I am not sure it's my code problem or the way I am using it is not correct. But I found the Vector3.SmoothDamp works fine under Update(). Here are my code, anyone can tell me what's going on? public class TouchInputSwipeFlick4 : MonoBehaviour {

 public float speed=1.5f;
 
 private float currentObjPosX;
 private Vector2 touchDeltaPosition;

 public float smoothSpeed=0.1f;
 public float smoothTime = 0.3F;
 
 private float goalPos;
 
 
 void Update () 
 {
     currentObjPosX = transform.position.x;
     goalPos = Mathf.Round(transform.position.x/25)*25;
             
     if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) 
     {
         // Get movement of the finger since last frame
          touchDeltaPosition = Input.GetTouch(0).deltaPosition;
         
         //P0 to Start Page
         if (currentObjPosX>0 && touchDeltaPosition.x>0)    GoStart();
         
         //PEnd to Start Page
         if (currentObjPosX<-350 && touchDeltaPosition.x<0)    GoStart();
         
         // Move object across XY plane by controling the speed, in this case, we are moving the camera
         if (currentObjPosX<=0 && currentObjPosX>=-350)    //need to be >=-225 otherwise >-225 will let user "stock at that page)
             transform.Translate (touchDeltaPosition.x*speed*Time.deltaTime,0,0);
         
     }
     
     if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
     {
         transform.position = Vector3.Lerp(transform.position, new Vector3(goalPos, 0, 0) , Time.time*smoothSpeed);
     }
     
     
     
 }


Thanks

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 farooqaaa · Mar 23, 2012 at 03:46 PM

TouchPhase.Ended is called only once. For smoothdamp to work it has to be called continuously until it reaches the destination.

Use a bool variable and then call it from Update().

 bool doSmoothDamp;
 
 void Update()
 {
     if(doSmoothDamp)
     {
          // smoothdamp code here
     }
  
     if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
     {
         doSmoothDamp = true;
     }
 }

Comment
Add comment · 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 zombiewalker · Mar 25, 2012 at 01:00 PM 0
Share

Thanks for replying so quick. I tried your solution, but unfortunately it didn't work and stuck at the first page. $$anonymous$$aybe something is missing in my code?

Here are my code:

//* public class Test : $$anonymous$$onoBehaviour {

 public float speed=1.5f;
 private float currentObjPosX;
 private Vector2 touchDeltaPosition;
 public float smoothSpeed=0.1f;
 public float smoothTime = 0.3F;
 private float goalPos;
 private bool doSmoothDamp=false;
 
 void Update () 
 {        
     if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.$$anonymous$$oved) 
     {
         // Get movement of the finger since last frame
          touchDeltaPosition = Input.GetTouch(0).deltaPosition;
         
         //P0 to Start Page
         if (currentObjPosX>0 && touchDeltaPosition.x>0)    GoStart();
         
         //PEnd to Start Page
         if (currentObjPosX<-350 && touchDeltaPosition.x<0)    GoStart();
         
         // $$anonymous$$ove object across XY plane by controling the speed, in this case, we are moving the camera
         if (currentObjPosX<=0 && currentObjPosX>=-350)    //need to be >=-225 otherwise >-225 will let user "stock at that page)    
             transform.Translate (touchDeltaPosition.x*speed*Time.deltaTime,0,0);
         
         currentObjPosX = transform.position.x;
         goalPos = $$anonymous$$athf.Round(transform.position.x/25)*25;
         
         
     }
     
     
     if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
     {
         doSmoothDamp = true;
     }
     
     
     if (doSmoothDamp)
     {
         transform.position = Vector3.Lerp(transform.position, new Vector3(goalPos, 0, 0) , Time.time*smoothSpeed);    
     }
     
     
 }
 
     
 //Fucnctions for moving to each page 
 public void GoStart()
 {
     Application.LoadLevel(0);    
 }

)

//**

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

SmoothDamp touch look iOS Android 1 Answer

Exception error 1 Answer

Touch Follow 3d. 1 Answer

Drag Object, same speed as mouse/touch 3 Answers

direction/inertia touch system (2d) 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