Search Unity

[RELEASED] Pro Camera 2D - The definitive 2D & 2.5D Unity camera plugin

Discussion in 'Assets and Asset Store' started by luispedrofonseca, Jul 29, 2015.

  1. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Ah great work! I just purchased it, hobby or not, I couldn't resist trying it out any longer haha. Will check it out when I have some free time!
     
    luispedrofonseca likes this.
  2. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Thanks! :) Let me know how it goes and if you have any doubts or suggestions.
     
  3. TanselAltinel

    TanselAltinel

    Joined:
    Jan 7, 2015
    Posts:
    190
    Yay! Finally bought this. I'll try it when I get home :)
     
    luispedrofonseca likes this.
  4. TanselAltinel

    TanselAltinel

    Joined:
    Jan 7, 2015
    Posts:
    190
    I downloaded the package.
    Looked at example scenes, peeked at user guide.
    Added component to my main camera in finished scene.
    Set some options, played with settings.
    It's working like a charm.
    Didn't even take 5 minutes to make all these.

    Seriously, this asset deserves a praise. I am a programmer and I tried to do something similar, but didn't really put my time into it. Now, I'm looking at the code (I'm curious, can't be helped) and I see we have a nice coder here, I expect more assets from you to make our development process easier :D
     
    luispedrofonseca likes this.
  5. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Tried out most of the standard features in it last night, pretty awesome!

    A few things that I wrote down when I was going through everything...

    Issues:
    Undo doesn't remove Trigger Boundaries/Influences, etc that were just added, I think normal behaviour is that created things can be removed using undo/redo

    The text overlaps some of the fields on my screen, not sure why, it happens no matter how big I stretch the window to, attached is a screenshot for you.

    Ideas for improvements:

    Numeric Boundaries -> Instead of the user having to enter values, perhaps allow the user to click-create an object that is the 'marker' for the boundary line? Then when designing the scene, they can just drag that to wherever they want. (The marker object would display the appropriate horizontal or vertical line, as ProCamera2D does when you input the value, just attached to the object)

    Zoom Triggers -> To me, it seems like a lot of the time people would zoom in, they would want to zoom out again after the player exists the zoom trigger, doing so requires placing a zoom in trigger, then a zoom out trigger on either side (correct me if I'm wrong). I think an option should be built into it, for the zoom to go away when the player is leaving the trigger area. It seems like a common enough use that should be included

    Creating Triggers -> When creating a trigger, using the helper button, I think it should autofocus that in the scene view. After making a trigger, it makes sense that the default location won't be OK, and it'll have to be moved. Even if they create multiple triggers using the helper at once, they'll still need to be moved, so focusing on them immediately seems intuitive (not selecting though, as they'd lose ProCamera focus)

    Trigger Organization -> This is just an organization thing, I know some assets lets particle systems automatically place created items under a single empty GameObject to keep things nice and tidy, but when setting up a scene I'm always having to drag the triggers I create into a "ProCamera Triggers" game object. This might (or might not!) be a good default behaviour. I might just be a neat freak for my hierarchy though, I really don't know if other people do this, or if it's a good idea to have it built in (maybe an option?)

    Integrations -> NodeCanvas is a really amazing and professional alternative to Behaviour Designer and PlayMaker, although not as mainstream popular. It'd be great to have the same integration that PlayMaker gets for this! nuverian (the author) is really good for adding wanted integrations, so you could contact him about it if you don't have his asset. http://forum.unity3d.com/threads/nodecanvas-2-behaviour-trees-state-machines-dialogue-trees.227190/

    Final Thoughts:
    Totally awesome, well worth the money, and I wish I had this months ago when I first started playing with Unity! (though I'd understand cameras a lot less if I did, this still would've saved a huge headache!)

    I only checked out most of the default, non coding stuff, but the code looks really well written and designed. I'll be excited to see what kind of things I can create with it. Hopefully if the plugin setup is easily transferable, people can swap plugins for this at some point

    Demos were great, well designed, single-focused without being cluttered with other stuff, it was really simple to see what was going on (bondaries, by their nature was a little more confusing at the start, with relative, starting boundary etc). I tried implementing everything without reading any documentation at all to see how easy it would be, and almost every example got into my demo scene with a few minutes of each.

    10/10! Will go write a review later, when I've got some time haha. Sorry for being long-winded, was a late night with a coffee brain when I was going through it all making notes...
     

    Attached Files:

  6. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    @TanselAltinel Thanks for the purchase and the review! I don't have plans to write any new plugins in the near future but I do intend to keep working on this one for as long as possible. :)

    @Async0x42 WOW! That's what I call an in-depth review!
    Thanks for the improvements suggestions, I'll definitely add them to the to-do list! Not sure about keeping the triggers inside one parent but I'll give it some thought. Stay tuned!
     
  7. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Yeah, that kind of seems like a user/author preferential thing, I've seen some assets do it, some don't, maybe it is best just to leave it for the user,
     
  8. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    I saw in the documentation for geometric boundaries it says it works with any 3D collider. I started to dig into this because I was intending to use a 2D edge collider to collide the camera against. Any chance of supporting 2D colliders when in Orthographic mode?

    Basically I've been wrapping dynamically wrapping my map areas in edge colliders with a script, and PC goes through it. (Checking out ProCamera as a top-down rpg camera now haha)
     
  9. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Unity 2D colliders only work on the XY axis. Since ProCamera2D works on all axes I had to only support 3D colliders for geometry boundaries.
    Are you using the XY axis for your top-down game?
     
  10. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Ah that makes sense, yes the top-down is 2D XY, just the default 2D environment.

    It's not a game-breaker for me at all, since i'll be using boundaries for areas anyways, but I was thinking that most people using this in Orthographic mode would be expecting 2D colliders to work (if they didn't read the documentation)
     
  11. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Noticed this in one of the Playmaker actions
    Code (CSharp):
    1. [Tooltip("Remove a target from the camera")]
    2. public class ProCamera2DMoveCameraInstantlyToPositionAction : FsmStateAction
    Description is for a different action

    Edit:

    Also
    Code (CSharp):
    1. [Tooltip("Add a target for the camera to follow.")]
    2. public class ProCamera2DToggleCinematicFocusTargetAction : FsmStateAction
    doesn't seem to match up with what it's doing (toggling cinematic focus)
     
    Last edited: Aug 14, 2015
  12. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Here's NodeCanvas Integrations I switched over from the PlayMaker ones you included, though, they're totally untested aside from adding a camera target. Hopefully nuverian will fix them up with his touch and provide an official integration package :D

    I'm also not sure about the Reset() override in ApplyInfluencesTimedAction, I haven't written in depth Tasks for NodeCanvas so, not sure if it's needed or not.
     

    Attached Files:

    nuverian likes this.
  13. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Yep, those tooltips are wrong! Thanks for detecting them. ;)
    Oh, that's so cool!! Maybe I should create a repo to put extra plugins and helpers that people build on top of ProCamera2D?
     
    Too-Nerd-To-Die likes this.
  14. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Something would be useful maybe, I have a couple helpers that I wrote up that I plan to post after I clean them up a bit (one's a drag/drop script for 2D Toolkit tilemaps to generate boundaries automatically for each tilemap, so you can jigsaw puzzle a world together like NES zelda without having to manually create/adjust boundaries).

    Things get lost so easy on the Unity forums though, so I was thinking of posting it in your subreddit, but a github repo would be best I think, if people were interested in sharing their work! (Though, people would have to selectively get scripts from it, since different helpers may require different third party assets)
     
  15. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Hey guys,

    v1.4 which brings support for pixel-perfect is almost ready and I'd like to ask if anyone would be willing to beta-test it. I want to make sure it's perfect :) before putting it out there!
     
  16. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    I'll try it out for sure, sent you a PM with my email and invoice #
     
    luispedrofonseca likes this.
  17. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Feature request for you -> events for certain things that occur in ProCamera, for my example, I'm using boundaries to designate different 'zones' in the game, so I need a BoundaryEntered event that I attach to. I think it'd be useful for code-oriented people to have events throughout ProCamera for anything significant that happens.

    ProCamera2DTriggerBoundaries.cs
    Code (CSharp):
    1.         public event Action BoundaryEntered;
    2.  
    3. <snip>
    4.             if (ProCamera2D.CurrentBoundariesTriggerID != _instanceID)
    5.             {
    6.                 ProCamera2D.CurrentBoundariesTriggerID = _instanceID;
    7.                 Transition();
    8.  
    9.                 if (BoundaryEntered != null)
    10.                     BoundaryEntered();
    11.             }
     
    luispedrofonseca likes this.
  18. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    That's a great suggestion @Async0x42 ! Currently, the events ProCamera2D has are:

    Code (csharp):
    1. public Action OnExclusiveFocusStarted;
    2. public Action OnExclusiveFocusFinished;
    3. public Action OnBoundariesTransitionStarted;
    4. public Action OnBoundariesTransitionFinished;
    What other events would you like to have?
     
  19. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    Those are OK for the main camera script I think, but each helper plugin should have their own events that trigger I think. Since each helper has their own gameObject, it's easy to create a custom MonoBehaviour that attaches to an event trigger in that specific helper.

    Then they can just do (pseudocode):
    Code (CSharp):
    1. var helper = GetComponent<BoundaryTrigger>();
    2.  
    3. helper.OnBoundaryEntered += () => {Do whatever when entering};
    4. helper.OnBoundaryExited += () => {Do whatever, like disable all mobiles that were in the camera zone before
    For boundaries specifically, an OnBoundaryEntered and OnBoundaryExited, that way we can easily tie some functionality into the boundary zones.

    For TriggerZooms there could be events for when it starts influencing the camera, and when the camera left the influence area and it's not affecting the camera anymore (other zooms may be affecting the camera, but that specific zoom trigger isn't, so it would fire an event)

    Basically, for all of them actually, just when they start (or entered) their effect, and when they end (or exited) their effect. Those are the key things that people would use in coding to integrate some fancy effects into ProCamera behaviour.

    (Also, I think that the helper plugins, like Boundary, should trigger their own OnBoundariesTransitionStarted (/etc), in addition to ProCamera's event, that way people can attach to all transitions that happen, or a specific transition that they want)

    Hopefully you understand my meaning, typed this up quickly!
     
  20. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Makes total sense @Async0x42! I'll put those in on the version after 1.4. ;)
     
    Async0x42 likes this.
  21. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Just to let you know that I just submitted an update (v1.3.1) which addresses a few issues that were detected while working on the next major update (v1.4) which will bring support for pixel-perfect.

    Pixel-perfect support is taking me a little longer than I expected so I decided to launch these other tweaks as a separate update so you don't have to wait for them.

    Please check the first post for the change log. Cheers! ;)
     
    Too-Nerd-To-Die likes this.
  22. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
  23. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    You got featured in the 'Hot New Assets' email for the asset store newsletter, congrats! Hope it drives up sales and more feedback
     
  24. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Nice, just saw that email! Thanks for the heads up!
     
  25. XxPleYxX

    XxPleYxX

    Joined:
    Jul 26, 2011
    Posts:
    41
    There is no Playmaker zoom action?
     
  26. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Hi @XxPleYxX,
    Zooming is achieved using the the Zoom-To-Fit plugin or the TriggerZoom helper. On both cases you don't need any PlayMaker action, or using any kind of code, to use them.

    What are you trying to achieve?
     
  27. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
  28. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Version 1.4 with support for pixel-perfect was just submitted to the Asset Store. Should go live in the next few days! YAY! ;)

    Next, update all the documentation and videos to add all the new stuff. :)
     
    Too-Nerd-To-Die likes this.
  29. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    I've created a list with a few of the games that use ProCamera2D. You can find it here:

    http://www.procamera2d.com/showcase/

    If you happen to have a game that also uses ProCamera2D, please let me know so we can put it there too.
     
  30. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Async0x42 likes this.
  31. arkhament

    arkhament

    Joined:
    Jan 24, 2015
    Posts:
    114
    @luispedrofonseca, your asset requires one license per seat? or I can buy once and use in all my projects?
     
  32. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    It's the typical Asset Store license. You buy once and can use it on all your projects.
     
  33. arkhament

    arkhament

    Joined:
    Jan 24, 2015
    Posts:
    114
    luispedrofonseca likes this.
  34. arkhament

    arkhament

    Joined:
    Jan 24, 2015
    Posts:
    114
    Oh! sorry I got a question, the "Multiple targets" mode can update if I new players or targets appear/pool/drop? like super smash bros camera?

    I mean like example, there is 3 players and the camera follow all the player then appear one more player in the middle of the battle and there is where the camera follow the 4 players.

    Regards,
     
  35. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Yes! You can even control how long it takes to add that new camera target. i.e. how long it takes until that new camera target reaches it's maximum influence on the camera position.
    See this: http://www.procamera2d.com/user-guide/#add_camera_target
     
  36. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
  37. BTStone

    BTStone

    Joined:
    Mar 10, 2012
    Posts:
    1,422
    Uh, encountered a bug today:

    When I enable the Frame Debugger, the game is paused and when I unpause the game again, the camera only follows the character into the Y-Axis :)
     
  38. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Hi @BTStone,

    Thanks for the information. Are you using the latest version (v1.4.1)? Can you replicate it every time?
     
  39. Async0x42

    Async0x42

    Joined:
    Mar 3, 2015
    Posts:
    104
    For me, using the latest version at least, I'm not able to replicate this at all :(
     
    luispedrofonseca likes this.
  40. BTStone

    BTStone

    Joined:
    Mar 10, 2012
    Posts:
    1,422
    Woops, you're right, I still used 1.2 - updated and it works without a flaw :)
    Sorry for this! I thought I was already on 1.4...
     
    luispedrofonseca likes this.
  41. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    No worries! The asset store needs a way to notify the users about a new upgrade.
     
  42. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Change-log on the first page updated! New and exciting features coming very soon! ;)
     
  43. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Great news! After a little battle between me and Wordpress I can now "deep-link" to a specific demo on the demos page! This will help making the documentation and marketing material better.

    Give it a try with the new speed based zoom feature demo:
    Speed Based Zoom demo

    Also, I've noticed a few people didn't know they could change between demos, so at least now I can send them directly into a specific one.
     
    Async0x42 and Too-Nerd-To-Die like this.
  44. MaddoScientisto

    MaddoScientisto

    Joined:
    Jan 30, 2015
    Posts:
    62
    luispedrofonseca likes this.
  45. BTStone

    BTStone

    Joined:
    Mar 10, 2012
    Posts:
    1,422
    Hey @luispedrofonseca

    did you already adressed the prefab-issue I mentioned at our skype call? :)
     
    luispedrofonseca likes this.
  46. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Hi @MaddoScientisto, not sure what you mean about the helpers for tk2d, but ProCamera2D is fully compatible with tk2d (2DToolkit). All features work perfectly, including with a tk2dCamera.

    Regarding the demo site, it appears to be up for me. Can you try again please? http://www.procamera2d.com/demos

    [EDIT]

    You were right! The links to the demos on the asset store description are wrong because they're using https. I'll fix those ASAP. Any how, you can reach them on the link provided earlier. Thanks!
     
    Last edited: Oct 1, 2015
  47. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Hi @BTStone, that issue was fixed in v1.4.1. ;)
     
    BTStone likes this.
  48. BTStone

    BTStone

    Joined:
    Mar 10, 2012
    Posts:
    1,422
    Haha, I just wanted to rant how Unity doesn't notifiy about updates of assets and the moment I load the Asset Store to update ProCamera2D I see this tiny Mail-Icon with 5 notifications. Great :D
     
    luispedrofonseca likes this.
  49. MaddoScientisto

    MaddoScientisto

    Joined:
    Jan 30, 2015
    Posts:
    62
    I just purchased the asset after reading the documentation thoroughly, can't wait to play around with it.

    So for now a small question:

    My play area is composed of 2d toolkit tilemaps but there will always be a single one loaded at a time and changing map means just switching scene.
    Now if I want to keep the camera constrained inside the map do I just have to add 3D colliders around each edge of my map?

    Can I also use the numeric boundary feature, assuming it works with absolute world values and I know exactly how wide and tall my map is?
     
  50. luispedrofonseca

    luispedrofonseca

    Joined:
    Aug 29, 2012
    Posts:
    943
    Thanks for the purchase @MaddoScientisto!

    You can use either method (numeric or geometry) to constrain the camera to some boundaries. However, if you know the boundaries ahead of time, it's better to use numeric simply because that way the camera doesn't have to calculate the collisions.

    Let me know how it goes!