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 hollym16 · Aug 14, 2013 at 10:58 AM · limitorthographicconstraintsboundaryclick and drag

Setting Click and Drag constraints

Hi there.

So, I've got this 2D scene with an orthographic camera looking at a plane. I've got a click and drag script on the camera that allows you to pan across the plane. However, when it gets to the edge, you can keep dragging it until its off screen.

How do you set it so that once it reaches the edge of the plane it cant drag any further? Not sure if there's an easy way of doing this but I would appreciate any help.

Thanks!

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by robertbu · Aug 14, 2013 at 03:15 PM

Open approach is to calculate the minimum and maximum that the camera is allowed on the 'x' and the 'y'. The orthographicSize is half of the vertical size seen by the camera. The variables 'planeHeight' and 'planeWidth' is the world unit size of the plane. Note if you are using the build-in plane, it is 10 x 10 when the scale is (1,1,1).

 #pragma strict
 
 var planeHeight = 12.0;  // world units of plane 
 var planeWidth  = 16.0;
 
 private var minX : float;
 private var maxX : float;
 private var minY : float;
 private var maxY : float;
 
 function Start () {
     var halfViewportHeight = Camera.main.orthographicSize;
     var halfViewportWidth  = halfViewportHeight / Screen.height * Screen.width;
     
     minX = -planeWidth  / 2.0 + halfViewportWidth;
     maxX =  planeWidth  / 2.0 - halfViewportWidth;
     minY = -planeHeight / 2.0 + halfViewportHeight;
     maxY =  planeHeight / 2.0 - halfViewportHeight;
 }
 
 function LateUpdate () {
     transform.position.x = Mathf.Clamp(transform.position.x, minX, maxX);
     transform.position.y = Mathf.Clamp(transform.position.y, minY, maxY);
 }
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 Cyber-X-Zone · Aug 14, 2013 at 03:53 PM

You can use Mathf.Clamp to set minimum and maximum values the camera could go.

Format is : static function Clamp(value: float, min: float, max: float): float;

For Example, add this script to the Main Camera object::

 var xMin : float;
 var xMax : float;
 var zMin : float;
 var zMax : float;

 function Update () {
    transform.position = Vector3(Mathf.Clamp(transform.position.x, xMin, xMax), 0, Mathf.Clamp(transform.position.z, zMin, zMax));
 }

First, we specify the 3 Vectors and set the value for x-axis between xMin and xMax variables, such that the Mathf.Clamp forces the value of transform.position.x to be in between the xMin and xMax variables.

The same happens for z-axis, as we apply the transform.position.z between zMin and zMax variables.

But, we don't need to change the the value of y-axis because you only need to pan the camera, so we set the value of y as 0.

For more information, visit: Mathf.Clamp.

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

16 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

Related Questions

Boundaries / movement constraints 7 Answers

Implementing Camera bounds proportionally to its ortographic size 0 Answers

Creating a boundary that scales with orthographic camera 1 Answer

How to make a limit so that my character stays on the screen? 0 Answers

making boundry for sidescroller 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