Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Master Camera: Scroll/Zoom, Strafe, FPS-3PS Toggling, Minimal/No Clipping and More

Discussion in 'Assets and Asset Store' started by tzvier, Dec 8, 2011.

  1. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355

    Platformer, Third Person Shooter, Real Time Strategy, Side Scroller, Zoom, Strafe, Toggle to FPS, Object Fade, Wall Collision, Button Look and more. Pick the features you want, leave the ones you don't. Set up your in game camera in minutes.

    The camera is one of the most basic components of nearly any video game. Your players don't spend much time thinking about it, and now with Master Camera, you shouldn't either.



    For older tutorial and breakdown videos take a gander at Master Camera at the Thought Vandal website.




    Change Log:

    Update 2.5.11
    -MCScroll:
    --"Speed" changed to "mouseSpeed"
    --"Scroll Speed" added to effect actual camera movement speed.
    -MCKeyToZoom added - allows the camera to zoom on defined keypress.

    2.5.10
    -Fixed issue with Camera Return Speed and Click To Toggle on MCButtonLook

    2.5.9
    -Added speed variable to the MCButtonLook script to allow smooth movement back to the return position.

    2.5.8
    -Added follow mode "FollowBehind" to keep the camera at the character's back.

    2.5.7
    -Fixed character controller + rigidbody issues.
    -Added ClickToToggle option for MCButtonLook.

    2.5.6
    -Updated MCScroll to be able to turn on and off MeshHiding, as well as Camera Collision, both are now off by default.
    -Added MCZoomPan which allows for the camera to pan a certain direction as the camera zooms / scrolls in or out.

    2.5.5
    -MCLOSFade and MCLOSFadeOther scripts now work with materials that have no color option such as Mobile > VertexLit.

    2.5.4
    -MCLOSFade and MCLOSFadeOther scripts now work with objects where the renderer is on a child object of the collider, and with colliders that have multiple child renderers.
    -MCLOSFade and MCLOSFadeOther scripts now allow defining a string for the "FadeShader" that is, the shader used when fading the object. The default is "Transparent/Diffuse"

    2.5.3
    -MCLOSFadeOther has been added to the "MC Xtra Files" folder. This script can be attached to any object that should trigger Line of Sight Fading for objects on the fade layer. The fading will only happen if the object is in the camera's field of view.

    2.5.2
    -MCButtonLook now has the option to return the camera to position it was in when the button was pushed (Return To On Click : True), or stay where it is currently at. (Return To On Click : False)

    2.5.1
    -MCMouseDampenend now responds to horizontal and vertical angle limits.

    2.5
    -Presets are now #pragma strict.

    2.4
    -Added MCSetView to set the camera to a specific rotation / distance on key press.

    2.3a
    -Added a MultiplayerTracker Prefab/Script to track multiple players on screen.
    -Added FightingDemo Scene which uses Multiplayer Tracker.
    -Added McMouseDampened addon script for dampened mouse movement.
    -Added a Cursor Lock Script.


    2.2
    - Added Presets
    -MCLOSFade script's "Fade" layer no longer needs to be added to the "Collision Layer Mask" layers. This is done automatically.
    -Camera Rotation Mode : None - is now an option.
    -Added RTS Controller

    2.1
    -ButtonLook is now an addon.
    -Renamed several variables to be more intuitive.
    -Horizontal and Vertical Minumum and Maximum Angles now work in "Follow" Mode.
    -Preferred Distance works without needing MCScroll script attached.
    -Added PDF Manual

    2.0
    -Code has been broken up to be modular to minimize the amount of code you don't need in your project.
    -Implemented #pragma strict.
    -Changed LOSFade from using JSArrays to Generic Lists for speed and #pragma strict.
    -Added callable function TestLOS(layerMask) to MasterCamera script. Use this to test for line of sight from the camera to the rotation object.
    -Added callable function StraferSwap() to MCStrafe script. This will swap which shoulder the camera is over per Lypheus request.
    -Bug Fix: Camera no longer tilts in follow modes if euler x rotation is not 0.
     
    Last edited: Feb 7, 2013
  2. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
  3. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    No demo?
     
  4. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Fair enough, I will work on getting that out as soon as possible.
     
  5. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Demo link added to main post.
     
  6. ArenMook

    ArenMook

    Joined:
    Oct 20, 2010
    Posts:
    1,902
    Edit: No longer relevant, Tzvier fixed everything.
     
    Last edited: Dec 30, 2011
  7. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Thanks for the feedback. I have updated to demo so the options and controls are more obvious.

    The rotation speed is a variable that is easily changeable in the inspector, I have slowed this down in the demo.

    Thanks for the offer of your project, but it seems be a simple smooth follow camera with a click to mouse look option and otherwise lacks nearly all of the features I was looking for, and designed Master Camera to have.

    If you have any more questions, please feel free to take a look at the tutorial videos. They go in depth to explain the functionality of the project.
     
    Last edited: Dec 29, 2011
  8. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    Instead of moving to player when close to wall, can you make the wall transparent? I think for modern games, that is preferred approach.
     
  9. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    I can possibly make that an additional feature. Can you name some games I can take a look at for reference? None of the games I have played recently (Assassin's Creed, Skyrim, etc.) go with transparent walls. I'm sure I have seen it, I just can't remember where.
     
  10. Elzean

    Elzean

    Joined:
    Nov 25, 2011
    Posts:
    584
    I would like this kind of feature too. It is use often in games like Diablo, Baldur's Gate or other game that needs to keep a fix camera angle / zoom. May be Dofus or some other isometric games are using it too.
     
  11. Lypheus

    Lypheus

    Joined:
    Apr 16, 2010
    Posts:
    664
    One thing I'm looking to implement on my TPS camera : My character is left or right offset, when I raycast from camera and there is something blocking my view, I'll check from the character and if the line of sight is clear, switch the camera/player positions.
     
  12. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    @ Elzean: Ah, so more isometric view type games. Ok, I will see what I can come up with.

    @Lypheus: So, your camera is set over one shoulder, and if line of sight is lost from over that shoulder, you want the camera to auto-switch to be over the other shoulder?
     
  13. Lypheus

    Lypheus

    Joined:
    Apr 16, 2010
    Posts:
    664
    Exactly, really I would just support the behaviour with a means of "switching" which side the camera is on and let the developer go from there (i.e. they may tag walls for this to deal with transparencies and things you cannot really account for as a foundation widget/library). Looking at your demo it seems you like have this covered with strafing left or right, it'd be nice to have the feature use a strategy class that we can override for implementing anything specific and then you provide the default of just doing a simple raycast to check for los blockages.
     
    Last edited: Dec 30, 2011
  14. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Ok Folks, line of sight object fading on selected layers has been implemented and submitted. The demo has also been updated.

    Lypheus, I'll see what I can come up with.
     
  15. ArenMook

    ArenMook

    Joined:
    Oct 20, 2010
    Posts:
    1,902
    Very nice improvement, Tzvier!
     
  16. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Per user request, the code is now all #pragma strict for iOS compatibility and general speed optimization.

    @ArenMook - Thanks, glad you approve.

    @Lypheus - I'm implementing some basic functions that you could call to produce the effect you're looking for. They are:
    TestLOS(layerMask);
    and
    StrafeSwap();

    The code to implement what you've asked for on a very basic level would be:
    Code (csharp):
    1.  
    2.  
    3. #pragma strict
    4. private var strafer : MCStrafe;
    5. private var mc : MasterCamera;
    6. var LOSLayer : LayerMask;
    7.  
    8. function Awake(){
    9.     strafer = GetComponent("MCStrafe") as MCStrafe;
    10.     mc = GetComponent("MasterCamera") as MasterCamera; 
    11. }
    12.  
    13. function Update () {
    14.     if(mc.TestLOS(LOSLayer)){
    15.         strafer.StrafeSwap();
    16.     }
    17. }
    18.  
    Does that suit you?
     
    Last edited: Jan 2, 2012
  17. Lypheus

    Lypheus

    Joined:
    Apr 16, 2010
    Posts:
    664
    Ya I think that's a nice implementation.
     
  18. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Update to version 2.0 submitted. Changes include:

    -Code has been broken up to be modular to minimize the amount of code you don't need in your project.
    -Implemented #pragma strict.
    -Changed LOSFade from using JSArrays to Generic Lists for speed and #pragma strict.
    -Added callable function TestLOS(layerMask) to MasterCamera script. Use this to test for line of sight from the camera to the rotation object.
    -Added callable function StraferSwap() to MCStrafe script. This will swap which shoulder the camera is over per Lypheus request.
    -Bug Fix: Camera no longer tilts in follow modes if euler x rotation is not 0.

    New demo uploaded, should function pretty much the same as the previous version.
    New Tutorials to come. . .
     
  19. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    It is very difficult to stop implementing cool stuff to make tutorial videos about all the cool stuff that's been implemented.

    Version 2.1 missed being uploaded during the Asset Store downtime, so we're on to version 2.2 now with Presets and a new video to show how they work. A PDF manual has also been added to the project.

    The initial post has been updated.
     
  20. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Update to version 2.3a

    The Asset Store seems to have been having issues lately, version 2.2 set "Pending Review" for a week, so hopefully the 2.3a submission will trip a trigger and get a new version up before I leave the country for week, losing computer access in the meantime. Updates include:

    -Added a MultiplayerTracker Prefab/Script to track multiple players on screen.
    -Added FightingDemo Scene which uses Multiplayer Tracker.
    -Added McMouseDampened addon script for dampened mouse movement.
    -Added a Cursor Lock Script.
     
  21. Bluestrike

    Bluestrike

    Joined:
    Sep 26, 2009
    Posts:
    256
    Hi,

    I want my camera to go to default positions when the player pushes a button, but I am not sure gow to achieve this.
    I figured out how to go switch to a default zoom distance on button click, but having the rotations switch to default values
    is what I am having trouble with: (0 and 30 degrees)

    Code (csharp):
    1.     if  (Input.GetButton("ResetView"))                                                                                         
    2.     {
    3.         preferredDistance = startDistance;
    4.         rotationObject.transform.localEulerAngles.y = 0;
    5.         rotationObject.transform.localEulerAngles.x = 30;
    6.     }
     
  22. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    The rotation object is set to private variable hRotation and vRotation in the main MasterCamera.js script. So if you are adding this code to the Update function of that script, you can go with something like:

    Code (csharp):
    1.  
    2. if  (Input.GetButton("ResetView"))                                                                                        
    3.     {
    4.         preferredDistance = startDistance;
    5.         vRotation = 0;
    6.         hRotation = 30;
    7.     }
    8.  
    I will include an addon script where you can set the variables on a key press in the next update.
     
  23. pneill

    pneill

    Joined:
    Jan 21, 2007
    Posts:
    207
    Is there any built in support for touch input or are the scripts all mouse / keyboard controls?
     
  24. TouchSoft

    TouchSoft

    Joined:
    Oct 18, 2008
    Posts:
    218
    Yes, I'd like to know about mobile too. I'm a few clicks away from buying this because I need it. But I really need it for mobile only right now.

    The RTS camera especially so that players can swipe across the screen to move the camera. And also touch controls for the other cams.
     
  25. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    I have spoken with customers who have used the camera rig in iOS games. The primary inputs are ran through the input manager, but there are several which are bound to variable keys. It would not be difficult to change these few settings to work through the input manager.

    I personally do not have the licenses to develop for mobile, but I am very willing to work with anyone who wants to test it out. If you find that there are issues that prevent certain features you want to use on mobile, please let me know and I will do my best to resolve them and get everything working smoothly.
     
  26. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    2.4 submitted with MCSetView Addon Script.

    Change Log updated in first post.
     
  27. TouchSoft

    TouchSoft

    Joined:
    Oct 18, 2008
    Posts:
    218
    Hi Tzvier, I have a mobile license and would be happy to do any testing.

    I'm going to buy the script today and I'll send you my order number so you know I'm an actual paying customer :)
     
  28. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Sending the order number isn't necessary. (= I look forward to getting some solid feedback on the mobile aspects.
     
  29. Pilot

    Pilot

    Joined:
    Oct 13, 2011
    Posts:
    20
    Hello Tzvier,

    Have to say I am really impressed with the features of your camera system and how well you are supporting customer feedback. Great work! I have been testing the camera in the demo in the past week to see if it will compliment my game mechanics. I am not sure if this has been updated since, but in the web demo you have linked above I am having two small issues. These are both related to the Follow With Button camera (bottom of the list):

    1) When using the right mouse button to rotate, when it is initially clicked, the camera always resets from its current position to one slightly above the camera. By holding and dragging you can then of coarse rotate the camera to where ever you want. If the movement you are doing is very small and involves several delicate click and drags, it can look a little glitchy since the camera will snap to that slightly above position with each click. Is there any way to adjust this?

    2) This may be related to the first comment, but I'm not sure. When standing in one of the maze doorways with the character's back very close to the wall (but while still seeing most of the character), and either strafing the camera or rotating it using the mouse, sometimes when it collides with the wall behind it starts to violently shake and keeps doing so until it is moved again. I have tried to isolate exactly when this happens, and it seems basically when the characters is surrounded by walls (doorway) and has their back close to one of them. I suppose since the camera is between the wall and character, when trying to strafe or rotate it doesn't have anywhere to go and so starts shaking. If you are having trouble getting this same effect, try standing with a wall right up against the characters right side, then try strafing the camera to the right but holding the strafe right button. You should see the camera bouncing left to right in almost a shaking like manner.

    Hope I have described this in enough detail. If you have any question about what I have said please let me know and I will post back. Apologies if my comments sound too harsh. I really like your camera system as I said above which is why I am providing feedback, hopefully it is helpful. Keep up the great work Tzvier!

    Kind regards,
    Pilot
     
    Last edited: Feb 16, 2012
  30. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Pilot,

    Thank you for the kind words. It's nice to hear positive feedback sandwiching legitimate concerns. To address your concerns:

    1) The demo is an older revision, however everything works pretty much the same way, except for the button look. It doesn't currently work as I understand you would like it too. Now when the button is pressed the camera maintains it's current position and then moves with the mouse. When the button is released, it snaps back to the position it was in when the button was pressed. I hope that makes sense. I've started implementing this snap back to be an option and will release a new version when I get it all squared away.

    2) The spasms that the camera goes through has to do with where the MC.Collider objects are set in the rig vs. the width of the object that they are colliding against. There is a breakdown of how this works on the Master Camera Tutorial Video #3 found here at about the 4:00 minute mark. These objects can be adjusted to suit the terrain that you are working with.
     
    Last edited: Feb 16, 2012
  31. Pilot

    Pilot

    Joined:
    Oct 13, 2011
    Posts:
    20
    Hi Tzvier,

    No problems at all. Yes in the first part I was talking about when the button is pressed. If the camera now maintains its position on mouse press then bingo, problem solved; it doesn't seem to do this in the demo. It is quite fine (and expected behaviour) for the camera to snap back once the mouse is released.

    I have watched the video again and it seems that to solve the camera shake/spasms in a similar situation to mine, one would need to set the minimum distance for these colliders closer to the character, is that correct? The main scenerio where this could be a potential problem is in tight interior spaces eg. narrow hallways, low ceiling rooms, small tunnels where a character has to crawl or crouch. I have made a simple diagram of what I think is happening, please let me know if I am on the right track.



    - in the left diagram the character (blue triangle) moves foward in a narrow corridor towards a corner
    - at the apex, the character moves backward, positioning themselves with their back to the apex
    - at this point (as I understand) the colliders (red circles) can either be positioned with some on either side of the corner (top diagram)
    Or
    - with all on the same side (bottom diagram)

    The scenario in the top diagram is rare because in a narrow space the angle at which one would need to move backward towards the corner would have to be precise. But I think this is the case where the spasms occur though (correct me if I am wrong). Since rotating (curved blue line) or strafing the camera at this point confuses the colliders.
    Anyway please let know your thoughts. This aspect is important for me as my project involves a lot of narrow interior spaces, with many corners etc, and so, how camera occlusion is handled does matter.

    Thank you for your time Tzvier, appreciate it.
    Pilot
     
    Last edited: Feb 16, 2012
  32. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    The Colliders' position are fixed relative to the Scroller object, and are therefor always the same distance apart from one another. They don't actually collide with anything and will pass through all other objects ( walls, terrain, characters). They are the points in space where rays are cast to in order to determine if the camera should collide with something. Narrow hallways and passages aren't what is causing this issue. The problem here is narrow walls. The Colliders are going off to each side of the narrow wall.



    As the rig moves in and out, the raycast angle changes slightly. So to start, the collider finds the wall. Then it scrolls in, changing the angle slightly, loses collision with the wall, and scrolls back out. This changes the angle slightly back, where it collides with the wall, etc, etc to camera spasms. If the wall here was just slightly wider, or the colliders just a little closer together on the local x axis, the collisions with the wall would be more consistent.

    If you end up in a place where this is still an issue, the addition of more colliders, particularly one directly behind the camera would solve this completely. And that would just require duplicating and renaming one of the collider objects, repositioning it, and adding a line of code to the main script. If you would like I can post step by step directions on how to do this.
     
    Last edited: Feb 16, 2012
  33. sefou

    sefou

    Joined:
    Aug 30, 2011
    Posts:
    287
    Yes. I'm interested . Thanks.
     
  34. Pilot

    Pilot

    Joined:
    Oct 13, 2011
    Posts:
    20
    Thank you for that great explanation Tzvier. I now understand what is happening completely.
    If you have the time, yes I would really appreciate the instructions on how to modify this.

    Thanks again Tzvier. Keep up the awesome work!
     
  35. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Here is a video tutorial on adding more MC.Collider Objects.

     
  36. Pilot

    Pilot

    Joined:
    Oct 13, 2011
    Posts:
    20
    Awesome!! Thank you so much for the great support Tzvier. That is really helpful.
    For the number of colliders (and therefore number of raycasts), is there a maximum you would suggest not to go over for performance reasons?
     
    Last edited: Feb 18, 2012
  37. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    It really depends on the game/platform you're using it in. Which is kind of a cop-out way of saying you'll probably need to do your own individual testing for your specific game/platform. The ranges that the rays are cast are generally relatively short. I doubt there would be much of a problem if you had a dozen or so, and 100's would be quite excessive. But it all really depends on a ton of different factors.

    See also:

    http://answers.unity3d.com/questions/169163/upper-limit-for-raycasting.html
     
  38. Pilot

    Pilot

    Joined:
    Oct 13, 2011
    Posts:
    20
    After reading the link I think I have a good idea of what you mean. Thanks again, was really helpful.
     
  39. Gherid_lacksGPS

    Gherid_lacksGPS

    Joined:
    Dec 3, 2011
    Posts:
    111
    Really nice and I will probably be picking this up. I was wondering if you have a demo/tutorial of fps ----> 3ps camera switching? Also, and maybe this has already been addressed or I missed something but, the player does not move with camera adjustments when jumping - the camera simply pans around the character until jumping ceases. I don't know if there is a setting of some sort for this, but the ability to manipulate a jumping/areal character with camera movement can be pretty critical.
     
  40. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    In the demo, fps/3ps camera switching can be triggered by hitting the "g" key.

    I not sure I understand your other concern. The camera rig follows the player even when jumping, or if your character controller allows it, flying. . .
     
  41. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    What a nice camera asset.
    I read about mobile/ios support and wanting this feature too.
    Will there be soon mobile support for this asset besides that it is pragma strict?
    I have an ios license too to test it like TouchSoft.
    Will buy it then.

    Edit:
    Oh and will there be a c# version comming too?
     
    Last edited: Feb 21, 2012
  42. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Thank you Stolley,

    There are no issues with Master Camera on mobile devices that have been brought to my attention.

    My hope is that those who have had concerns about it's compatibility with mobile were able to set up their camera's so quickly that they barely thought about it, finding little if any issues. And since we're all busy people working away on our own projects, they didn't have much time or reason to explore every option in the camera weren't comfortable coming back saying, "Hey it works great for mobile!" At least that's the (potential?) fantasy I've choosing to live in right now.

    Seriously though, if you come across something that prevents Master Camera from working as intended on mobile, I will do my best to find and implement a resolution.

    With regard to a c# version, there are no plans for this.
     
  43. WHHoog

    WHHoog

    Joined:
    Oct 1, 2011
    Posts:
    22
    Hi Tzvier,

    I have just bought the camera asset and I must say that it is a very nice tool and fun to play with! but I also have a problem when I switch to Android, I get these error messages:
    Assets/MasterCamera/MC Presets/MC3PPlatformer.js(14,20): BCE0048: Type 'Object' does not support slicing.
    Assets/MasterCamera/MC Presets/MC3PShooter.js(13,40): BCE0019: 'Length' is not a member of 'Object'.
    Assets/MasterCamera/MC Presets/MCRTS.js(12,40): BCE0019: 'Length' is not a member of 'Object'.

    Any ideas?

    Thanks!
    Ryan
     
  44. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Ryan,

    Thanks for the purchase!

    Ah, yes. I know what's causing this issue. I didn't write the presets to be #pragma strict as they aren't meant to be used at runtime. I was unaware that it would throw errors in development. I have implemented fixes and submitted a new version. (Master Camera v2.5)

    If the Asset Store takes longer to approve the submission than you'd like, you can just go into the offending scripts and change the line reads:
    Code (csharp):
    1.  
    2. private var components;
    3.  
    to read like this:
    Code (csharp):
    1.  
    2. private var components : Component[] ;
    3.  
    in all the scripts, and that should take care of the errors. Please let me know if you come across anything else.

    Thanks
     
    Last edited: Feb 23, 2012
  45. WHHoog

    WHHoog

    Joined:
    Oct 1, 2011
    Posts:
    22
    Great, thanks!
     
  46. WHHoog

    WHHoog

    Joined:
    Oct 1, 2011
    Posts:
    22
    wow that is fast!!

    things are working 100%

    Thanks for the fast support!
     
    Last edited: Feb 24, 2012
  47. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    The ThirdPersonController.js is one of the standard assets that comes with Unity. I imagine if that one is causing problems with mobile development, then Unity will have released a mobile version of the script.
     
  48. cozza13

    cozza13

    Joined:
    Dec 13, 2010
    Posts:
    64
    Hi Great camera . How do I get the "Followwbuttonlook" that you have in the demo
     
  49. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    FollowWButtonLook has been broken out into it's own addon script "MCButtonLook" Just add that script onto your MasterCameraRig and you should be good to go.
     
  50. tzvier

    tzvier

    Joined:
    May 20, 2010
    Posts:
    355
    Update 2.5.1

    -MCMouseDampenend now responds to horizontal and vertical angle limits.