• 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 renegadetokki · Jan 27, 2016 at 05:59 PM · camera-movementcheckpoint

How to move/lock camera upon checkpoint?

Hello, I'm making a game that would require an animation trigger to play before the camera is unlocked to follow the player to its right where the camera would lock again. (Similar to old, arcade fighting games)

I'm pretty new to programming and the code I have now for the CameraController was from a tutorial that continuously follows the player only along the x-axis.

 //camera controller that only follows player on x-axis 
 
 using UnityEngine;
 using System.Collections;
 
 public class CameraController : MonoBehaviour {
 
     //how far player can move away from camera before it follows
     public float xCharRange        = 1.0f;
 
     //smoothing of camera movement
     public float xTrackSmooth        = 10.0f;
 
     //boundaries our camera can move in X Axis
     public Vector2 maxXLevel;
     public Vector2 minXLevel;
 
     //hold our camera track point transform
     public Transform cameraTrackPoint;
 
 
     
     // Update is called once per frame
     void FixedUpdate () 
     {
         TrackPlayer ();
 
 
     }
 
     //getting distance out character is away from camera if we went past the set range
     //we will allow
     bool CheckXCharRange ()
     {
         return Mathf.Abs (transform.position.x - cameraTrackPoint.position.x) > (xCharRange);
     }
 
     //camera tracking main action
     void TrackPlayer ()
     {
         //variable to store the positional information of our player camera 
         float targetX = transform.position.x;
 
         //if character is out of range, then move camera to follow character until in range again
         if (CheckXCharRange ()) 
         {
             targetX = Mathf.Lerp (transform.position.x, cameraTrackPoint.position.x, xTrackSmooth * Time.deltaTime);
         }
 
         //clamp our camera's range of movement
         targetX = Mathf.Clamp (targetX, minXLevel.x, maxXLevel.x);
 
         //move our camera after all calculations are done with above...
         transform.position = new Vector3(targetX, transform.position.y, transform.position.z); 
     }
 }
 
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
1
Best Answer

Answer by FortisVenaliter · Jan 27, 2016 at 06:27 PM

There are a number of ways to do this, but I'll describe my favorite here:

I usually have a GameSession class that manages global variables, including the main camera. It also has a field for an 'event' camera. Whenever that field is set with an active camera, it disables the normal main one.

So, for your game, whenever you get to the checkpoint, you'd just instantiate a camera with whatever locking scripts you want, and set it in that event camera field. Then the session would notice it is set, and disable the main camera. When you are done with the locking, just delete the camera and clear the field, and the main camera will be reactivated. It takes a bit of coding, but it works well, in my experience.

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 renegadetokki · Jan 27, 2016 at 10:31 PM 0
Share

Thank you very much! :D

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Camera movement feels weird 2 Answers

Camera Problem 0 Answers

Help with respawn 0 Answers

2D Camera shakes when player move fast 0 Answers

Switch/move camera when leaving current one? 0 Answers


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