Search Unity

Motion Controller

Discussion in 'Assets and Asset Store' started by Tryz, Feb 21, 2014.

  1. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Excellent, that will stop us having to customize assets across the board as they update.
     
  2. bizfu

    bizfu

    Joined:
    Apr 19, 2014
    Posts:
    3
    Love this asset combined with your Adventure Rig camera controller! I highly recommend it to anyone looking for a AAA quality third-person character system.

    I have a question and/or request. When I update your assets it overwrites two settings that I need to change in your core files to get things to function the way I would like.

    One is the mIsXboxControllerEnabled variable in the InputManager.cs file that I would like to override to true in my motion controller module if at all possible but for now I just edit your file.

    The second is the yaw speed multiplier that you apply to the vertical axis in the AdventureRig.cs controller "lMouseY = InputManager.ViewY * 0.25f;" in aim mode. If it is more appropriate I can post about that in the other Asset's forum thread, but I was similarly looking for a way to override that value in the camera or character controller.

    If there is a way that I can already do either of these things without editing your file, please advise. If not, would it be possible to add that functionality in a future update? Thanks for your great work, and I can't wait for future updates.
     
  3. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Bizfu,

    Thanks for the comments.

    This week I'm putting out an update to change the name of the InputManager. I'll add these options at the same time. I'm not exactly sure where yet, but I'll figure it out.

    Thanks,
    Tim
     
  4. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    A not-so quick update on the InputManager vs. MCInputManager request:

    Problem:
    Other assets are using the class name "InputManager", but without namespaces (as they should). So, there is no way to resolve the conflict.

    Challenge:
    The challenge is that the Motion Controller, Adventure Camera, and Easy Input all use the same namespace and class name "com.ootii.Input.InputManager". So, if you have the Motion Controller and then buy Easy Input (which many have done), you just delete the InputManager.cs file from Motion Controller and everything works.

    If I simply change the name in Motion Controller, I have to change it in the other two assets as well. As soon I as I change the name in the other two assets, I break everyone's code across all these assets.

    Solution:
    I spent a couple of days trying out some different tricks (delegates, stubs, pass-throughs, etc). The best solution I have is to have all the motions use a pass-through that simply wraps the actual input handling. Then, in the wrapper you'd use what ever input solution you prefer.

    For example:
    1. Jump Motion would call "ootiiInputStub.IsJustPressed('Jump')"
    2. ootiiInputStub.IsJustPressed would then call InputManager.IsJustPressed

    If you didn't want to use the included Input Manager or Easy Input, you'd replace the contents of step #2.

    Good:
    This abstracts the input solution out of the Motion Controller. If you don't want to use my InputManager.cs, you can simply delete it and put in your own code without having to change every motion (since they call to ootiiInputStub).

    Bad:
    What I don't like is that it adds an extra function call for every input request.

    If the extra call is an issue for you and you use my InputManager, you can actually just replace ootiiInputStub with InputManager and everything will work.

    Final:
    After a couple of test, the performance impact is extremely minor on the PC. So, I'll go with this solution. It means in the next update, I'll change every motion to use "ootiiInputStub...." instead of "InputManager...".

    Impact:
    If you use the MC's InputManager or Easy Input, there will be no impact. I'll make sure everything works for you.

    If you've created custom motions, you should change "InputManager" to "ootiiInputStub".

    If you use a different input solution, delete InputManager.cs and customize ootiiInputStub to fit your needs. Basically, you'll remove each function's contents and call to your specific input code. I don't expect ootiiInputStub to change after this, so updates shouldn't over-write your changes.

    Wrap-up:
    Whew, sorry for the long post. I just wanted to make sure everyone was clear on what I was doing since it will touch nearly every motion. I'm finishing this today and will test for a couple of days.

    If anyone volunteers to test, just shoot an email to tim@ootii.com.

    Thanks!
     
    Last edited: Oct 19, 2014
  5. Braza

    Braza

    Joined:
    Oct 11, 2013
    Posts:
    136
    Hi!
    I have a question about the product. Looks cool, but feels oriented to a Assassinscreedish games. I'm working on a tactial turn based game, lets say X-Com/Fallout tactics. So I'm in need of representing selected actions, no real input in a FPS sense. There's no "press W to run forward", right? It's "move to this hex that I clicked along that path".
    Will it fit? Or is it a definite overkill or even misfit?
    Thanks!
     
  6. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hi Braza,

    It was definitely built with our 3rd person game in mind (which is Assassin's Creed-ish).

    That said, it's not limited to just those types of games. The MC is really about managing Mecanim animations. In that sense, it doesn't care. I know of one person who is using it to manage animations for an RTS. In this case, he followed an approach similar to what I did with the goblin videos.


    Here, the goblins were given way-points to go to and they move along using the motions as needed. There would definitely be some customization involved, but I don't believe it would be too bad.

    One other note I'd make is that if you're looking to have 100s of characters running around at one time, this may not be a good fit. There's some overhead in managing the animations and I haven't tried it with groups larger than 50. I know at 50 it was taking about 2ms to process all the motions.

    Hope that helps.
     
    Braza likes this.
  7. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    It's always a bit nerve wracking to make these kinds of changes, but the renaming we talked about is live as well as a couple of other things:

    1. ootiiInputStub is now being used by all the motions. It's a pass-through to ootii's InputManager class that comes with the Motion Controller, Adventure Camera, and Easy Input. If you don't use the InputManager, simply delete the class and modify the ootiiInputStub functions to reference the input code you do use.

    2. I've created an InputManagerCore class that can be added as a component to a GameObject in the scene. This way, the "IsXboxControllerEnabled" property can be set and saved in the scene and not overwritten during updates. This isn't required, but was requested.

    3. In the Adventure Camera, there are now two new properties exposed in the inspector: "FPC Yaw Modifier" and "FPC Pitch Modifier". These properties allow you to modify the speed of the camera when rotating or pitching while in first-person mode. I added it in this thread since it was requested here :)

    I've really tried to test these changes thoroughly. Like always, if you do find something wrong, please email tim@ ootii.com and I'll look into it.

    Thanks,
    Tim
     
  8. airblaster

    airblaster

    Joined:
    Oct 5, 2014
    Posts:
    8
    I'm considering to buy a license for motion controller, but I have a few questions:
    - Is it suitable for use in mobile games?
    - How much effort does it require to integrate it with an input system like InControl?
    - Is it suitable for use in online games, e.g. with Bolt Networking?

    Looking forward to hearing your answers
     
  9. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    I'm using it with InControl, and once the inputmanager naming is sorted it's rather easy(if you've used InControl in other scripts it's pretty easy to accommodate in motion controller).

    Tim has added support for InControl already.
     
  10. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey AirBlaster and thanks Kurotatsu!

    Kurotatsu is right. The latest changes should allow you to plug in InControl (or any input system) fairly easily. Just throw away my InputManager.cs and InputManagerCore.cs. Then, modify the ootiiInputStub.cs to test your input as needed.

    As far as mobile games go, I know others are using it on tablets. Here's a video from Stan B. showing it working on an android tablet.


    * As with all games, you'll need to keep any eye on performance for your target device.

    Stan also got it working with multiplayer.


    I don't know about Bolt Networking specifically, but I would imagine it's the same. The trick is to use the same functions that I use for AI. These allow you to set destinations and activate motions. You're basically sending the commands through networking then triggering these functions.

    As always, I'm happy to answer questions if you get stuck.
     
  11. airblaster

    airblaster

    Joined:
    Oct 5, 2014
    Posts:
    8
    Thanks for the summary :)
    I've been digging into the Bolt Forums and found this statement by its author: "You can not use mecanim root motion or rigidbodies to control your characters."
    Is Motion Controller using any of these? If it is, is it possible to deactivate them or would this make the motion controller unuasable?
     
  12. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    The MC is using Mecanim.

    I just looked up Bolt and I see they talk about "Mecanim Replication". I'm guessing when they say that, they mean you have to let Bolt control Mecanim and you can't interfere as it would mess up synchronization. If it's true, that seems a bit disabling. :(

    From a networking standpoint, I believe what Stan did was simply pass messages (ie text, enums, or structures) that he then decoded and translated into actions. That's also what I do with the NPC AI. In this way, it works with Mecanim and doesn't try to hide it.

    If Bolt really does take over Mecanim, you would have issues. Unfortunately, I don't have any experience with it.
     
  13. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,686
    I think the idea with Bolt (and authoritative servers in general) is that root motion and rigidbodies that are processed on the client can create movement issues when they deviate from the server. An authoritative server needs to be able to dictate where each character is supposed to be, and if the server has conflicts with a client due to the client using root motion / rigidbodies it can cause jittering and rubberbanding type issues on the client as the moving objects are brought into compliance with the server.

    That said, every game needs to be hand-tuned a bit, and I imagine some games can get away with more client-side prediction on movement than others.
     
  14. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Thanks Hopeful.

    I think I merged AirBlaster's quote with what I read under "Mecanim Replication" and jump to the wrong conclusion. In the context of an authoritative server, what you're saying (and the quote says) makes total sense.

    In trying to think ahead, I grouped all animations...like a wave or sword swing... into my comment.

    So, AirBlaster, I'll reword my answer a bit. The Motion Controller doesn't use any rigid bodies. It does provide support for using, modifying, and even removing root-motion. Several of the existing motions do expect root-motion in order to drive the character forward, but it's not required and you can remove it.

    That said, if Bolt is deciding which animations to play and controlling all the Mecanim states in order to keep the server/clients in sync, I don't think it would be compatible with the Motion Controller.

    Now you've got me curious... :)
     
  15. Braza

    Braza

    Joined:
    Oct 11, 2013
    Posts:
    136
    Hi again,
    Could you pelase elaborate on "they move along using the motions as needed"?
    How do they actually move? Do you simulate inputs and leverage root motion?
    Thanks!
     
  16. bizfu

    bizfu

    Joined:
    Apr 19, 2014
    Posts:
    3
    Thank you! Great support. 5 Stars on both assets :)
    Keep up the great work.

    P.S. Bought Mount Points because of your great products and support.
     
    Last edited: Oct 26, 2014
  17. airblaster

    airblaster

    Joined:
    Oct 5, 2014
    Posts:
    8
    Hi everyone,

    thanks for elaborating on this topic.
    I'm not 100% sure, but I think you can set up which animations and states are synced by bolt.
    Could it maybe be possible to use MotionController with Bolt after all?
     
  18. airblaster

    airblaster

    Joined:
    Oct 5, 2014
    Posts:
    8
    As far as I understand Bolt input works like this:
    You set up a "Command" which takes input data (e.g. is the "left" button pressed, was the "jump" button pressed). This data is handed over to the player motor (which is basically what I'd want to use Motion Controller for). The motor returns a object containing the state data, e.g. player position and velocity. The computation happens on both server and the client based on the clients input data.
     
  19. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Bizfu,
    Thank you for the purchases and stars! All the ratings and comments help me with sales which in turn helps me keep the prices low. I really appreciate it. :)


    Hi Braza,
    You're right on with what you said. The way I handle AI with the Motion Controller is that you set a position or direction and then I turn that into "pseudo" controller input. The Motion Controller processes that input just as if it came from the keyboard or Xbox controller. This way, it doesn't matter if your NPC is actually controlled by AI or a player.

    In the support I added for Node Canvas and Behavior Designer, the NPC will actually jump and climb if it is blocked and can't follow the pseudo input. That's what's happening in the video. The Behavior Designer AI tells the character to go to a specific position (through the Motion Controller). That's turned into input to direct the NPC. However, if the NPC is blocked, the jump motion is activated and a climb will activate if there's a ledge.

    Big pause here... The Node Canvas and Behavior Designer support is all a bit experimental as I've been working on AI in my project for a while. I'm not 100% happy with it, but it is working.


    Hi Airblaster,
    What you're describing in the last post sounds a bit like what I do with the AI above. You can see that in my response to Braza.

    Having not worked with Bolt, my honest answer is that I just don't know. Unfortunately, I don't have a way of getting you a sample without giving you the whole code base.

    I wish I had a better response for you. :(
     
    Braza likes this.
  20. Stan-B

    Stan-B

    Joined:
    Aug 5, 2013
    Posts:
    126
    I'm pretty sure that Bolt can be implemented the same way as Tnet. Mecanim replication should me turned off, but movement variables that I used in NetworkController.cs script need to be added to the "Custom Properties" of Bolt. I may try it when I have some time, because I own both assets and I'm interested in Bolt as well(for another project)
     
  21. Braza

    Braza

    Joined:
    Oct 11, 2013
    Posts:
    136
    Cool. Any chances that this path movement module would be a part of the solution in the visible future?
     
  22. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Stan, you rock... 5 stars for you! :)

    Actually, the Behavior Designer version is available now. Just remember that it's experimental.

    It does require Behavior Designer as the AI that triggers the Motion Controller are BD Nodes as I described above. Inside of BD's package, there's an 'external' folder with an ootiiMotionControllerBD package. If you don't have Behavior Designer, I can get you the code so you can at least see what I'm doing. It will take me a couple of days. Just shoot an email to tim@ootii.com.

    Node Canvas is working, but I'm not really ready to release that yet. More to do. :)
     
  23. Stan-B

    Stan-B

    Joined:
    Aug 5, 2013
    Posts:
    126
    I guess ootiiInputStub class is going to be static as well as InputManager? This does not work at all for any kind of multiplayer(I need fake input from multiple instances of player). Every time you release the new version, I have to change all InputManager calls around the project to something like this:

    Code (CSharp):
    1.     public class Punch : MotionControllerMotion
    2.     {
    3.         NetworkController nc;
    4.         // Enum values for the motion
    5.         public const int PHASE_UNKNOWN = 0;
    6.         public const int PHASE_START = 500;
    7.         /// <summary>
    8.         /// Default constructor
    9.         /// </summary>
    10.         public Punch()
    11.             : base()
    12.         {
    13.             _Priority = 10;
    14.             mIsStartable = true;
    15.             if( nc == null)
    16.             {
    17.                 foreach(GameObject go in GameObject.FindGameObjectsWithTag("Player"))
    18.                 {
    19.                     if(go.name == NetworkController.oName())
    20.                     {
    21.                         nc = go.GetComponent<NetworkController>();
    22.                     }
    23.                 }
    24.             }
    25.         }
    26. ...
    27.         public override bool TestActivate()
    28.         {
    29.             if (mController.UseInput  nc.IsJustPressed("PrimaryAttack")  nc.IsPressed("Aiming"))            {
    30.                 // Grab the state name from the first active state we find
    31.                 string lStateName = mController.GetAnimatorStateName();
    32.                 // Ensure we're not currently climbing
    33.                 if (!lStateName.Contains("ClimbCrouch-SM"))
    34.                 {
    35.                     return true;
    36.                 }
    37.             }          
    38.             // Get out
    39.             return false;
    40.         }
     
  24. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Stan,

    Interesting. I wish you would have caught me a week ago. :)

    No promises, but here's what I'm thinking could solve the problem...

    ootiiInputStub becomes a non-static MonoBehavior class. As a base class, it would reference the static InputManager as it does right now. However, you could inherit from ootiiInputStub and then override the functions in order to keep the input associated with input specific to a character. In this case, you would reference the appropriate NetworkController.

    The Motion Controller would then have a property available in code (and through the inspector) where you could set which ootiiInputStub to use. If one isn't set, I'd use a static version like I do now.

    In your case, you'd have multiple ootiiInputStubs. Each one would be associated with one of your NetworkControllers. You'd assign each of the ootiiInputStubs to the appropriate Motion Controller.

    I think I could do it without breaking what I just did.

    Thoughts?
     
  25. Stan-B

    Stan-B

    Joined:
    Aug 5, 2013
    Posts:
    126
    If it's going to be non-static, I do not see any problem. BTW my network controller class can be very easily changed to support Unity Networking or Photon. I'd recommend you to add support of one of this solutions, both of them are free.
     
    rubble1 likes this.
  26. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Thanks. I'll have to think about the input as I don't want to keep messing things up for others.

    Networking will be a ways off, but could be interesting.
     
  27. evehal

    evehal

    Joined:
    Oct 18, 2014
    Posts:
    6
    first of all,thank you for this amazing package!and thanks to Tim
    Im making a 2.5D scroll game,the player's movement is confined to (x, y)
    is there a way like rigidbody to freeze the position such as z Axis
     
  28. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey evehal,

    There is no checkbox to do this automatically, but it would be pretty easy to do.

    You have two options.

    1. If you want to limit it all the time and for all motions, you modify the code in the MotionController.cs ApplyMovement() function. After all the motions are processed, this is the function that pushes the position changes to Unity's Character Controller. Around line 1730, you could simply change the "mState.Velocity.z" value to be 0. That would keep any movement from occurring on the z-axis.

    2. If you wanted to be more selective about which motions freeze the axis, you could do it in the motions themselves. In that case, you'd modify the "mVelocity.z" value in the Update() function of the motion.

    I'm glad you're liking the Motion Controller and I hope this helps. :)
     
    evehal likes this.
  29. brittmorris

    brittmorris

    Joined:
    Jan 9, 2014
    Posts:
    1
    Not sure if this is the right place for this sort of support question, so apologies if support should go through another channel or thread, but I'm having a problem with jump using Motion Controller on devices where the frame rate is low (skipped frames). The problem can be simulated by increasing the Time Scale on Edit | Project Settings... > Time to 5 or more. I haven't been able to dig deep enough into the internals of Motion Controller to pinpoint where the problem is occurring, but the gist of it is the player has a super jump with wild velocity when frames are dropped (I presume).

    The following jumping code is meant to implement a touch jump using a swipe gesture, where the player always jumps along the X axis (Z stays constant) with the angle of the jump determined by the approximate angle of the swipe and magnitude of the jump determined by the length of the swipe (up to a maximum). All of that seems to work fine with the exception of the super jump velocity/distance on slow/low frame rate devices. Would love to know if "I'm doing it wrong".

    Code (CSharp):
    1.     private void OnSwipeEnd(Gesture gesture)
    2.     {
    3.             // gesture contains a swipeVector and swipeLength
    4.             float swipeLength = Mathf.Min(gesture.swipeLength * 3.0f / Screen.width, 1.0f);  // max power is a swipe up to a third of the screen
    5.  
    6.             Vector3 dir = new Vector3(gesture.swipeVector.x, gesture.swipeVector.y);
    7.             dir = dir.normalized * JumpStrength * swipeLength;
    8.  
    9.             // code removed here (adjust player rotation to face the jump direction)
    10.             Jump(dir);
    11.     }
    12.  
    13.     private void Jump(Vector3 jumpDir)
    14.     {
    15.         var jump = MotionController.GetMotion(0, typeof(Jump));
    16.  
    17.         if (jump == null)
    18.         {
    19.             return;
    20.         }
    21.  
    22.         MotionController.ClearTarget();
    23.         MotionController.ActivateMotion(jump);
    24.         MotionController.AddImpulse(jumpDir);
    25.     }
     
  30. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Britt,

    Your code looks good and makes total sense. So I think you're fine there.

    Also, feel free to put it here or email me directly at tim@ootii.com. Email is probably better for me as it's easier for me to get notified that I have something. It's also less messy as we go back and forth :)

    I set the Time Scale to 5 in my demo scene and everything was moving 5 times faster (as expected).

    What I found interesting is that the AvatarFromAI character in the background ran and jumped as I would expect (super fast). Other than that, he was fine. However, the player controlled character did go crazy and shoot off to the moon. Everything should be scaled with Time.deltaTime. So, I wouldn't expect any errors with "overclocked" frame rates.

    Low frame rates (below 15-20 FPS) is different. In that case, when the frame rate fluctuates a lot (and is low), we could get in a situation where the calculated velocity is exaggerated in one frame and not compensated for in the next.

    Thinking about:
    velocity = velocity + (acceleration * deltaTime)
    position = position + (velocity * deltaTime)

    Having a higher deltaTime in one frame could cause a larger velocity that isn't compensated for in follow-on frames. If this is the case, it would be more a matter of inconsistent frame rates rather than just low ones.

    Just some background...
    In order to do the physics based jump, I am using Time.deltaTime to determine acceleration and positioning. Usually physics happens in FixedUpdate() with Time.fixedTime, but that wasn't possible due to dealing with things like platforming and motion management.

    What does all this mean? Let me dig into the x5 speed first. It's odd one character is behaving different than the other. Once I figure out what's going on there, that will help me understand where to go next.

    On your end, if you could do some tracking to help me understand your frame rates, that would help. Are they low, but consistent? Are they sporadic? This will help me figure out the root problem and if we can actually do something to help.


    Thanks!

    Tim
     
  31. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    774
    Hi.

    I've been using a competing product (cough - Character System) for a long time, but have had unresolved issues with their Mecanim implementation since it came out, so am looking for a good alternative. I've just recently discovered Motion Controller, and so far it looks very promising (other than the still missing swim and shoot animations). After reading other posts, and checking your documentation and videos, it looks like adding them will at least be possible, but given my skill level with character controllers, still a bit daunting. At least your scripts seem more approachable than the ones used by CS. I know you're pretty busy with this and other projects, but keep hoping someone will take you up on your suggestion and release an add-on pack containing some of these highly requested motions. :(

    After trying your web demo, using an XBox 360 style controller, I have a few questions:
    1. When rotating in place (using the right stick and the default camera) the character rotates, but there's no accompanying foot animation. Any plans to implement foot motion with this in the future, or do I need to add it to "swimming" and "shooting" on my to-do list?
    2. Not a big thing, but when rotating the Adventure Camera up and down, I found that the stick inputs were reversed from what felt intuitive to me. Pushing the right stick forward pointed the camera up, while pulling it back pointed it down. I usually set the camera control to mimic head movement - pulling back looks up, and pushing forward looks down. I'm sure this behavior can be changed using a toggle or something in the input controller or camera settings, but was curious whether this was the way it's normally supposed to work?
    Otherwise, your product looks great, and the support you're giving seems excellent. I'll be keeping an eye on developments here, and possibly even purchasing it soon. :)
     
  32. alexfeature

    alexfeature

    Joined:
    Apr 1, 2010
    Posts:
    132
    Hey Tim,

    First of all I want to thank you for making this awesome thing. I love the modularity of it and the simplicity with which certain things can be customised.

    That said I have a small problem figuring out how to do a 2D only movement system. At first I thought that I could just create a few motions that are constrained to XY plane but then realised this isn't the 'right' way to do it.
    Having said that, changing the MC to ignore or actually remap the actions / input doesn't seem like a good idea either. This leaves me with InputStub where I could just modify the input values to filter out unwanted input.

    Having made a few stabs at this I have had mixed results. While I was able to achieve X only movement the character no longer walks backwards. Also I want to use the UP / DOWN (Y axis) keys to have the character fly and crouch.
    Before I go poking around the code I figured I should ask the master first :)

    If you could give me some pointers on how I should approach this problem I would be eternally grateful. Basically what I'm after is a fully functional Side Scroller MC and Motions.

    If there is nothing like this already available hopefully with your guidance I will be able to throw something together and share it with the rest of the community.


    Regards,
    Alex
     
  33. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey FargleBargle,

    Thanks for checking out the Motion Controller.

    1. Yeah, I'm not super happy with the rotation without an animation. However, consensus seemed to be having the rotation was a decent start. I do want to get some animations in, but I just haven't had the time. So, I think the honest answer is that you should expect to have to put them in if you need them right away. I don't believe it would be difficult to do and I'd be happy to help. I just don't have the animations right now and don't want to commit to something I can't give you a time for.

    2. I've got a much better answer for this one. :) There is a setting on the InputManager to invert the y-axis. So, this would just be a matter of setting that property.

    I know the first answer sort of sucks, but I think it's better that I'm honest about features and time.

    If you do want to tackle it, feel free to email tim@ootii.com and I'll help how I can.
     
    FargleBargle likes this.
  34. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Alex,

    I've actually had a couple of people ask about this. While I didn't plan for it originally, it should be doable (with some work).

    When I think 2D only movement system, I think of something like Little Big Planet. Is that close to what you're thinking? If not, can you share a reference? I just want to make sure we're on the same page.

    I haven't actually tried to force a 2D movement system. But, my gut tells me that you should really be focusing on the motions and even the Animator transition conditions instead of the InputStub. The thing is that some of the transitions occur because of input that is relative to the camera. We need to make sure the motions and transitions use input relative to the character.

    Go ahead and email me at tim@ootii.com and we can work to create a simple walk motion that works on the 2D plane. I think if we get that working it will help us understand what we need to do to get the rest of the motions respecting 2D.

    Tim
     
  35. alexfeature

    alexfeature

    Joined:
    Apr 1, 2010
    Posts:
    132
    Hey Tim,

    Thanks for the reply. I'll poke around a bit tonight and email you then.

    - Alex
     
  36. FargleBargle

    FargleBargle

    Joined:
    Oct 15, 2011
    Posts:
    774
    I completely understand, being in the same boat myself most of the time. I'm not too worried about any of this yet, due to other projects and commitments. Maybe by the time I'm in a position to switch over, something will be available. Otherwise, I'm sure I'll muddle through. Your tutorials look pretty straightforward at least. Thanks for the quick reply, and for confirming what I said about your support. :)
     
    Tryz likes this.
  37. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    738
    Watching for future purchase list
     
    Tryz likes this.
  38. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Gekigengar,

    Watchers welcomed! :)
     
  39. NatanaelRey

    NatanaelRey

    Joined:
    Sep 10, 2013
    Posts:
    2
    Hello!

    I just bought this package and I'm loving it so far, but I can't get through some deformation problems... I'm new to Unity and its mecanim system, but I think it's related to my avatar mapping. Is there a way to completely ignore its bones and just play my animations instead of trying to interpolate motions?

    For now, all I'm looking for is a simple scene with a character that can only walk forward or stay idle.


    Thanks,
    nate
     
  40. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey Natanael,

    I'm not exactly sure what you mean by 'deformation problems'. Can you explain? Maybe include a picture if it will help.

    You can't really ignore the bones with Mecanim. It's how it plays the animations.

    I'm sure you've got the demo scene I include up and running. That's a good sample for getting started. If you want to email me a scene with your specific character and animations, I might be able to help you figure out what's going on. Feel free to email it to tim@ ootii.com
     
  41. NatanaelRey

    NatanaelRey

    Joined:
    Sep 10, 2013
    Posts:
    2
    Oh, thanks for your quick reply! I'm compiling some images and I'll email them to you!
     
  42. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    @Tryz
    I am interested to use your motion controller together with the latest version of UFPS.
    Do you have some informations if and how to use them together?

    Also i want to learn how to let the player character climb in different ways. Do you think i can learn it from your climb demo or do you have some information on where i can find good learning material about that topic?
     
  43. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey RandAIThor,

    I haven't tried it with UFPS. I just checked it out and I'm not sure what it means by "Mecanim Animated Player". If it's actually trying to control the Animator like MC does, there may be a conflict. If they just mean they have their own Animator, that should be fine. Unfortunately, I just don't know.

    As for the climb, you should be able to get it from the code. I'm a stickler for documenting code. So, you should be able to follow it. If something doesn't make sense or you have a questions, just shoot me an email and I'm happy to explain it.
     
  44. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    whats the chances you'll add at least a basic shooting setup? (raycast)

    I was just about to purchase but then I see adventure camera not included !! arhh really! shame
     
  45. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Hey MoHoe,

    Unfortunately, I don't have plans for shooting anytime soon. That said, the asset is built so you can extend it for your specific needs and I'm happy to help with direction/advice if you decide to go that route.

    As for the camera, I take creating and supporting these assets very seriously. You can see that in the ratings and the comments people leave. Unfortunately, I can't do that if I'm not paying my bills. I'm sure you can appreciate the situation.

    Thanks,
    Tim
     
  46. UnleadedGames

    UnleadedGames

    Joined:
    Feb 17, 2008
    Posts:
    242
    In all honesty I think the product is great as is. Not everyone needs shooting, climbing, etc. It's nice to be able to easily add what I need and not bother with what I don't need. If you don't think its easy to add new motions I suggest reading the documentation it's very clear and straight forward and I'm not a programmer in the least bit. I have my character system completely customized and couldn't be happier. I've bought several character systems on the asset store and to date this one is just simply the best. Now I'm just trying to figure out how to go into a fake first person mode when up against a wall to prevent clipping. :)
     
  47. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Thanks Unleaded! That's exactly what I hoped.

    The 'close-to-wall' clipping is tricky. With a third-person camera, I've seen a lot of games use separate colliders that prevent the player from getting stuck in corners or so close to a wall that the camera views beyond it. Tomb Raider 2013 did this and it worked, but it requires level setup.

    I've also seen some solutions that fade the avatar out. The problem is that doesn't work well with deferred rendering.

    All that said, I would like to do better. If you have a game in mind that handles it well, can you send me a video or point me at it. If I can come up with a good plan, I'm happy to add it.
     
    Last edited: Dec 4, 2014
  48. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    Yeah no probs Tim. I understand.

    @UnleadedGames uhmmm yeahh not everyone needs shooting.. yeah I got that.. should he take out climbing? not everyone needs that too :p
     
  49. UnleadedGames

    UnleadedGames

    Joined:
    Feb 17, 2008
    Posts:
    242
    MoHoe
    I wasn't trying to start a debate on what the developer should and shouldn't include in the project. I was sharing my POV on why I think the product is great as it stands and how simple it is to add new motions. Sorry if I created any confusion there. But to answer your question I'm glad climbing was there as an example because I learned from it and was able to pull off climbing ladders instead. But I also wouldn't to use a generic shooting and or genre specific things because I would want full control over how that all works especially where shooting is concerned when you have so many options and methods to achieve that. Of course that's just my opinion. I'm sure the option to have them there to learn from would be great but I just don't think its required. Again all that is my opinion. I'd just rather see improvements to the framework itself since its so easy to add your own genre specific motions as needed. My response was more on the side if you were on the fence on buying the product that I think its a great starting point for you. Sorry haven't read the whole thread here so I wasn't sure if you were a customer already, or were considering to be. Again wasn't trying to make you upset with my reply. :)

    Tim,
    No worries on my personal needs I was just making a joke about where I am now, I don't think that is something everyone would want. I'm getting there your products alone have taught me a lot!
     
  50. Tryz

    Tryz

    Joined:
    Apr 22, 2013
    Posts:
    3,402
    Awesome all around. I like friendly people. :)

    If you do get stuck or just have a question, don't hesitate to shoot me an email at tim@ootii.com.