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 Karsnen_2 · Dec 12, 2012 at 05:55 PM · camerasmoothtopdownsmoothdamp

How to make smooth transition with Camera

Hello Devs,

Target Platform : iPad

Game Type : Top-Down view (i.e. Camera is generally angled at Quaternion.Euler(90,0,0);)

Game Mechanic : The player is falling towards the ground and the camera is following the player. When the user does not give I/P to the player the player has it's own motion. Now the contrasting difference is that, the difference in velocity on the Player is huge when compared to I/P given and I/P not given. Hence I have to make a smooth transition between the two. Primarily it should not snap.

Methodology : I have a two lines of code which is responsible for moving the camera towards the required TargetPosition (Vector3) & TargetRotation (Quaternion). I have a switch case through enumerator, where in each case I just calculate the target position and rotation. This is supplied to two common lines of code, for the camera to move towards.

Problem :

Due to the difference in velocity, I am not able to get a smooth transition between modes. I have reading thro' the Unity Documentation where it is suggested to use `Vector3.SmoothDamp` for camera. I tried using SmoothDamp but I am able to figure the right way to pass those parameters.

CODE:

 void FixedUpdate ()
     {
         DeltaTime = Time.deltaTime;
         PlayerPosition = Player.transform.position;
         PlayerCurrentPosition = new Vector2(PlayerPosition.x, PlayerPosition.z);
         CameraCurrentPosition = new Vector2(this.transform.position.x, this.transform.position.z);
         CurrentVelocity = Player.transform.rigidbody.velocity;
         
         if(IO.isLeafManual())
             CurrentMode = CameraMode.ManualMode;
         else if(CurrentMode != CameraMode.LookAt)
             CurrentMode = CameraMode.AutoMode;
         
         switch (CurrentMode)
         {
             case CameraMode.AutoMode :
                 PositionalLerpFactor = Mathf.Lerp(PositionalLerpFactor, 1, (DeltaTime * 0.5f));
                 RotationalLerpFactor = Mathf.Lerp(RotationalLerpFactor, 1, (DeltaTime * 10));
                 if(!isWithinCircle (ProhibitionRadius))
                 {
                 //    TargetPosition = new Vector3(PlayerPosition.x, (PlayerPosition.y + HeightFromThePlayer), PlayerPosition.z);
                     TargetPosition = new Vector3(TargetPosition.x, (PlayerPosition.y + HeightFromThePlayer), TargetPosition.z);
                     TargetRotation = RequiredRotation();
                 }
                 else
                 {    
                     TargetPosition = new Vector3(TargetPosition.x, (PlayerPosition.y + HeightFromThePlayer), TargetPosition.z);
                     TargetRotation = Quaternion.Euler(90, 0, 0);
                 }
                 Player.transform.renderer.material.color = Color.red;
                 break;
             
             case CameraMode.ManualMode :
                 TargetRotation = Quaternion.Euler(90, 0, 0);
                 PositionalLerpFactor = Mathf.Lerp(PositionalLerpFactor, 10, (DeltaTime * 0.5f));
                 RotationalLerpFactor = Mathf.Lerp(RotationalLerpFactor, 1, (DeltaTime * 10));
             
                 TargetPosition = new Vector3(PlayerPosition.x, (PlayerPosition.y + HeightFromThePlayer), PlayerPosition.z);
                 Player.transform.renderer.material.color = Color.white;
                 break;
             
             default :
                 CurrentMode = CameraMode.AutoMode;
                 break;    
             
             
         }
     this.transform.position = Vector3.Lerp(this.transform.position, TargetPosition, (DeltaTime * PositionalLerpFactor));
         
         //this.transform.position = Vector3.SmoothDamp(this.transform.position, TargetPosition, ref CurrentVelocity, 100, 100, DeltaTime);
         // Not able to correctly coherent the game using smoothdamp from lerp
     
         
         this.transform.rotation = Quaternion.Lerp(this.transform.rotation, TargetRotation, (DeltaTime * RotationalLerpFactor));
     }

REQUEST :

I have continuous switching between the two modes, if I have to avoid snapping - What is the best way to deal with it?

I hope I was clear with my scenario and I have provided enough information. Please let me know, if I am missing something.

Thank you,

regards, Karsnen.

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

9 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Smooth Follow Rotation 3 Answers

Problem with Camera Transition (First-person to third-person, with Slerp) 1 Answer

Move A Camera Between Two Points Smoothly 1 Answer

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

I am writing a camera script, but it seems not to be working. Any suggestions? 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