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
1
Question by richardzzzarnold · Jan 26, 2011 at 04:11 PM · inputareamouseorbitrestrict

restricting MouseOrbit input area

I am building an interactive app for ipad. I have a machine ( excavator ) on the screen that is being operated by touch ( dragging rigidbodies and colliders around ), but I want to use MouseOrbit as well.At the moment, when you drag elements of the excavator around it operates the mouseorbit as well, so it all gets a bit visually confusing. As the excavator is always in the middle of the scene, I want to be able to use mouseorbit everywhere on the screen except for the middle, so there is no overlap. Is there anyway to do this ?I figure there must be some way to script in to mouseorbit a boolean question asking is the mouse within such and such an area but do not know how to do this. I looked at this other comparable example efficient method to detect mouse events anywhere on screen but dont think it is applicable for ipad

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
Best Answer

Answer by Jesse Anders · Jan 26, 2011 at 08:50 PM

If all you're wanting to do is detect whether the mouse position is in an area (e.g. circle or rectangle) in the middle of the screen, that's very easy to do. A point-in-circle test looks like this (untested pseudocode):

inside = squaredLength(point - circleCenter) <= square(circleRadius);

And the point-in-rectangle test looks like this (I think Unity may even have a function for this):

inside =
    point.x >= rect.min.x &&
    point.x <= rect.max.x &&
    point.y >= rect.min.y &&
    point.y <= rect.max.y;
Comment
Add comment · Show 2 · 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 richardzzzarnold · Jan 26, 2011 at 08:56 PM 0
Share

Oh I see it Rect.Contains .... thanks for the tip!

avatar image richardzzzarnold · Jan 26, 2011 at 09:04 PM 0
Share

it works !...but it is a bit jerky for some reason....

avatar image
0
Best Answer

Answer by richardzzzarnold · Jan 26, 2011 at 09:28 PM

I have put Rect.Contains into MouseOrbit.js in order to create a central exclusion zone, but am unsure how to reverse it. At the moment there is no input from outside the rectangle, but i want there to be no input from inside the rectangle. I have so far...

var target : Transform; var distance = 10.0; var rect = Rect (200,200, 450, 450);

var xSpeed = 250.0; var ySpeed = 120.0;

var yMinLimit = -20; var yMaxLimit = 80;

private var x = 0.0; private var y = 0.0;

@script AddComponentMenu("Camera-Control/Mouse Orbit")

function Start () { var angles = transform.eulerAngles; x = angles.y; y = angles.x;

 // Make the rigid body not change rotation
 if (rigidbody)
     rigidbody.freezeRotation = true;

} function LateUpdate () { if (rect.Contains(Input.mousePosition)) if (target && Input.GetMouseButton(0)) {

     x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
     y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;

     y = ClampAngle(y, yMinLimit, yMaxLimit);

     var rotation = Quaternion.Euler(y, x, 0);
     var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;

     transform.rotation = rotation;
     transform.position = position;
 }

}

static function ClampAngle (angle : float, min : float, max : float) { if (angle < -360) angle += 360; if (angle > 360) angle -= 360; return Mathf.Clamp (angle, min, max); }

Comment
Add comment · Show 3 · 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 Jesse Anders · Jan 26, 2011 at 10:45 PM 0
Share

You can edit your post to add more info (generally better than adding follow-up questions as answers, I think). As for your question, are you familiar with the ! operator? That's what you're looking for here.

avatar image richardzzzarnold · Jan 26, 2011 at 10:52 PM 0
Share

oh thanks ! wasnt sure how to format script in comment form

avatar image richardzzzarnold · Jan 26, 2011 at 11:01 PM 0
Share

brilliant ! works perfect now!

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

No one has followed this question yet.

Related Questions

Restrict touch input 0 Answers

Help In Making a SphereCast for 3D Tire! Working RayCast Script included! 0 Answers

key remaping menu 0 Answers

Is it possible to implement the steam controller in a non-steam game? 2 Answers

Strange LeanTween issue 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