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 Impius · Jan 13, 2014 at 08:17 PM · 4.3

2D Platformer Camera [Solved]

I'm using the camera script from the Unity Projects: 2D Platformer Asset package as a frame work for my camera however when I start the game the camera does not follow the player and returns an error:

NullReferenceException: Object reference not set to an instance of an object CameraFollow.Awake () (at Assets/Scripts/CameraFollow.cs:20)

which if I'm reading it right is referencing line 20

 player = GameObject.FindGameObjectWithTag("Player").transform;


However I've changed the player's tag to Player and have even tried creating a new tag and editing the script to match the new tag with no change in behavior. Can anyone point me in the right direction to get this working?

Full Camera Script using UnityEngine; using System.Collections;

 public class CameraFollow : MonoBehaviour 
 {
     public float xMargin = 1f;        // Distance in the x axis the player can move before the camera follows.
     public float yMargin = 1f;        // Distance in the y axis the player can move before the camera follows.
     public float xSmooth = 8f;        // How smoothly the camera catches up with it's target movement in the x axis.
     public float ySmooth = 8f;        // How smoothly the camera catches up with it's target movement in the y axis.
     public Vector2 maxXAndY;        // The maximum x and y coordinates the camera can have.
     public Vector2 minXAndY;        // The minimum x and y coordinates the camera can have.
 
 
     private Transform player;        // Reference to the player's transform.
 
 
     void Awake ()
     {
         // Setting up the reference.
         player = GameObject.FindGameObjectWithTag("Player").transform;
     }
 
 
     bool CheckXMargin()
     {
         // Returns true if the distance between the camera and the player in the x axis is greater than the x margin.
         return Mathf.Abs(transform.position.x - player.position.x) > xMargin;
     }
 
 
     bool CheckYMargin()
     {
         // Returns true if the distance between the camera and the player in the y axis is greater than the y margin.
         return Mathf.Abs(transform.position.y - player.position.y) > yMargin;
     }
 
 
     void FixedUpdate ()
     {
         TrackPlayer();
     }
     
     
     void TrackPlayer ()
     {
         // By default the target x and y coordinates of the camera are it's current x and y coordinates.
         float targetX = transform.position.x;
         float targetY = transform.position.y;
 
         // If the player has moved beyond the x margin...
         if(CheckXMargin())
             // ... the target x coordinate should be a Lerp between the camera's current x position and the player's current x position.
             targetX = Mathf.Lerp(transform.position.x, player.position.x, xSmooth * Time.deltaTime);
 
         // If the player has moved beyond the y margin...
         if(CheckYMargin())
             // ... the target y coordinate should be a Lerp between the camera's current y position and the player's current y position.
             targetY = Mathf.Lerp(transform.position.y, player.position.y, ySmooth * Time.deltaTime);
 
         // The target x and y coordinates should not be larger than the maximum or smaller than the minimum.
         targetX = Mathf.Clamp(targetX, minXAndY.x, maxXAndY.x);
         targetY = Mathf.Clamp(targetY, minXAndY.y, maxXAndY.y);
 
         // Set the camera's position to the target position with the same z component.
         transform.position = new Vector3(targetX, targetY, transform.position.z);
     }
 }
Comment
Add comment · Show 11
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 robertbu · Jan 13, 2014 at 08:24 PM 0
Share

Are you absolutely sure you tagged your player with 'Player' with an upper case 'P'? Note the code expects the the tag to be 'Player', not the name.

avatar image Impius · Jan 13, 2014 at 08:26 PM 0
Share

Yup absolutely sure that player is tagged as 'Player' and even went so far as to rename the asset as 'Player' as well making sure that they were capitalized.

avatar image legion_44 · Jan 13, 2014 at 08:38 PM 0
Share

Try to use player = GameObject.FindWithTag("Player").transform; ins$$anonymous$$d maybe?

avatar image Impius · Jan 13, 2014 at 08:42 PM 0
Share

That stopped the error from co$$anonymous$$g up however the camera is not following the player still.

avatar image legion_44 · Jan 13, 2014 at 08:57 PM 0
Share

$$anonymous$$aybe try to change all 'transform.position' to 'this.transform.position'. Nothing else is going to my $$anonymous$$d. And very obvious question, did you attached this script to Camera? (I must be sure of that xD)

Show more comments

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by Impius · Jan 13, 2014 at 09:32 PM

To get the camera to follow the player the Max X and Y and the Min X and Y must be set, they cannot be left at 0.

Comment
Add comment · 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
0

Answer by am1goo43 · May 16, 2016 at 10:27 AM

And TrackUpdate move to LateUpdate() block

Comment
Add comment · 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

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

20 People are following this question.

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

Related Questions

Unity 4.3 - 2D - Velocity based on rotation 1 Answer

Unity 4.3 - 2D demo - question about jumpForce 3 Answers

Play animation from script in Unity 4.3 0 Answers

How Do I Animate a Sprite in 4.3? 1 Answer

Problem with lights in 4.3 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