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 Mokad · Jul 21, 2014 at 04:27 PM · 2d2d-platformerorthographicparallax

My parallaxing is moving by it self?

I'm trying to follow a tutorial on youtube but my parallaxing is moving by itself even if I don't move. Here is the code, the tutorial uses a orthographic camera.

 using UnityEngine;
 using System.Collections;
 
 public class Parallaxing : MonoBehaviour {
 
     public Transform[] backgrounds;            //Array (List) of all the backgrounds and foregraounds to be parallaxed
     private float[] parallaxScales;            //The proportions of the camera's movement to move the backgrounds by
     public float smoothing = 1f;            //How smooth the parallax is going to be. Make sure to set this above 0
 
     private Transform cam;                    //Reference to the main Camera's tranform
     private Vector3 previousCamPos;            //The Position of the camera in previous frame
 
 
     //is called before start(). Great for referencing
     void Awake () {
         //set up the camera reference
         cam = Camera.main.transform;
     }
 
     //Use this for initializing
     void Start () {
         //The previous frame had the current frame's camera position
         previousCamPos = cam.position;
 
         //Assaigning corresponding parallaxScales
         parallaxScales = new float[backgrounds.Length];
         for (int i = 0; i < backgrounds.Length; i++) {
             parallaxScales[i] = backgrounds[i].position.z*-1;
         }
     }
     //Update is called once per frame
     void Update () {
         //For each Background
         for (int i = 0; i < backgrounds.Length; i++) {
             //The parallax is the opposite of the camera movement because the previous frame multiplied by the scale
             float parallax = (previousCamPos.x = cam.position.x) * parallaxScales[i];
 
             //set a target x position which is the current postion plus the parallax
             float backgroundTargetPosX = backgrounds[i].position.x + parallax;
 
             // create a target postion which is the backgrounds current position with it's target x postion
                 Vector3 backgroundTargetPos = new Vector3 (backgroundTargetPosX, backgrounds[i].position.y, backgrounds[i].position.z);
                 //fade between current position and the target position using lerp
             backgrounds[i].position = Vector3.Lerp (backgrounds[i].position, backgroundTargetPos, smoothing * Time.deltaTime);
 
         }
         //set the previous camera position to the camera's position at the end of the frame
         previousCamPos = cam.position;
     }
 }
 
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
3
Best Answer

Answer by Pyrian · Jul 21, 2014 at 06:51 PM

Try replacing the second "=" in line 36 with a "-":

 float parallax = (previousCamPos.x - cam.position.x) * parallaxScales[i];

 
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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

GeometryUtility.TestPlanesAABB working strangely with parallax background 2D 2 Answers

Background Image as Orthographic 2D Game Background - and quick 2D parallaxing question 1 Answer

Most efficient way to achieve 2D parallax effect with orthographic camera? 2 Answers

Orthographic Camera 3D Object Rendering Issue (Clipping), What's wrong? 3 Answers

parallax scrolling using orthographic camera 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