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 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.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Help with respawn 0 Answers

2D Camera shakes when player move fast 0 Answers

Switch/move camera when leaving current one? 0 Answers

I need to limit the rotation of my camera. 1 Answer

When attaching my custom camera script camera shakes when player starts to move fast. 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