Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only.

    Please, do not make any changes to your username or email addresses at id.unity.com during this transition time.

    It's still possible to reply to existing private message conversations during the migration, but any new replies you post will be missing after the main migration is complete. We'll do our best to migrate these messages in a follow-up step.

    On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live.


    Read our full announcement for more information and let us know if you have any questions.

[RELEASED] Ultimate Character Controller (UFPS 3 / Third Person Controller 3)

Discussion in 'Assets and Asset Store' started by opsive, May 29, 2018.

  1. mengqiang

    mengqiang

    Joined:
    Oct 5, 2022
    Posts:
    1
    In the top-down camera and character movement mode, I want to control the rotation of the camera through the middle of the mouse. How can I achieve this.
     
  2. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Hello - For support please post on the forum at https://opsive.com/forum. This will allow me to track support requests better.

    Justin
     
  3. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Version 3.0.19 has been released. Take a look at the release notes for the changes in this version. The PUN add-on has also been updated.
     
  4. Black_Raptor

    Black_Raptor

    Joined:
    Nov 3, 2014
    Posts:
    182
    Hi ! Is it possible to make PUN Multiplayer work wit Deathmatch kit ? To have something like this :

    Ultimate Controller + PUN Multiplayer for made a cooperative game in multiplayer and the Deathmatch kit to have an enemi shooter who will be sync in multiplayer
     
  5. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Yes, it is possible. The Deathmatch AI Kit itself isn't aware of PUN, but the real magic of the Deathmatch AI Kit is the behavior tree. The behavior tree should only be run on the master client, and from the Behavior Designer perspective it doesn't require any further integration.
     
    Black_Raptor likes this.
  6. Black_Raptor

    Black_Raptor

    Joined:
    Nov 3, 2014
    Posts:
    182
    Is it possible to use Emerald AI ? Indeed Deathmatch AI Kit
     
  7. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    The Emerald AI developer is working on a character controller integration, but the Deathmach AI Kit requires Behavior Designer and cannot use Emerald AI.
     
  8. Black_Raptor

    Black_Raptor

    Joined:
    Nov 3, 2014
    Posts:
    182
    Thanks you !

    I have many trouble to make Ultimate Character Controller working with URP, i follow the documentation but i still have those issue :
    upload_2024-3-23_2-54-10.png
    In first person the FPS Camera is solid blue ( I fix the scope with change the renderer to OverlayForwardRenderer for the FPP Cam but i still got a solid blue color ).
    And i also got this error :
     

    Attached Files:

    Last edited: Mar 23, 2024
  9. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Can you post this on the forum at https://opsive.com/forum. This will allow me to track support requests better. Also make sure you've set the render type on the camera controller.
     
  10. Black_Raptor

    Black_Raptor

    Joined:
    Nov 3, 2014
    Posts:
    182
    I finally find the solution to my problem, maybe you have to update your documentation you missing some step :)
    Thanks for your help !
     
    Mark_01 likes this.
  11. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Version 3.1 of the character controller has been released. You can see all of the changes on this page. In addition, the PUN Multiplayer Add-On and the Agility Pack were also updated.The link below has information on the latest version of the character controller.
     
  12. atmuc

    atmuc

    Joined:
    Feb 28, 2011
    Posts:
    1,208
    @opsive Can I use the PUN Multiplayer Add-On with Photon Fusion?
     
  13. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    No, the PUN add-on does not work with Fusion. We have a community member working on a Fusion integration but there's no ETA on that release.
     
  14. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,723
    Hey, If I bought the Ultimate FPS controller on Flash sale, how much would it cost to upgrade to Ultimate Character Controller, as opposed to simply buying Ultimate Character controller at 50% off?
     
  15. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    The upgrade prices aren't changed during the sales so you're better off getting the Ultimate Character Controller instead of UFPS to the Ultimate Character Controller. It's $125 to upgrade from UFPS.
     
    kdgalla likes this.
  16. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,723
    Thanks for responding so fast, but I just noticed your third-person controller is going to be on flash sale too, so that throws another curve-ball. :D
     
    opsive likes this.
  17. Mateo_Loooong

    Mateo_Loooong

    Joined:
    Jan 10, 2022
    Posts:
    1
    There seems to be a bug with the editor when displaying the Ragdoll ability drawer: specifically on line 37 of the RagdolllInspectorDrawer:
    FieldInspectorView.AddFields(unityObject, target, Shared.Utility.MemberVisibility.Public, container, onChangeEvent, null, onValidateChange, false, null, true);

    After showing the bold text, "Ragdoll" in the inspector, nothing is appearing:
    OpsiveRagdollError.png

    Prior to this, I was fixing some other issues after using the Character Manager to configure my own character from the one in the Demo scene (the demo scene was pretty buggy too, but I assume that's due to it not being built for HDRP, so no biggy). Certain "Presets" in the Abilities and Item Abilities were not being copied over correctly, and were showing as either "Missing" or "None". I'm not sure if this is related to the error, but worth mentioning. I manually fixed all of these, but Ragdoll is the last one. Unfortunately, I cannot fix it due to this error in the editor. I have tried manually adding the UltimateCharacterLocomotion to an empty gameObject and adding the Ragdoll (as shown in the image above) to see if there was a difference, but no dice.

    The full exception:
    ArgumentException: Default value is not present in the list of possible values
    UnityEngine.UIElements.PopupField`1[T]..ctor (System.String label, System.Collections.Generic.List`1[T] choices, System.String defaultValue, System.Func`2[T,TResult] formatSelectedValueCallback, System.Func`2[T,TResult] formatListItemCallback) (at <05f2afe6185f419bbdba66c4cec39481>:0)
    UnityEngine.UIElements.PopupField`1[T]..ctor (System.Collections.Generic.List`1[T] choices, System.String defaultValue, System.Func`2[T,TResult] formatSelectedValueCallback, System.Func`2[T,TResult] formatListItemCallback) (at <05f2afe6185f419bbdba66c4cec39481>:0)
    Opsive.Shared.Editor.UIElements.Controls.Attributes.LayerAttributeControl.GetControl (Opsive.Shared.Editor.UIElements.Controls.Attributes.AttributeControlBase+AttributeControlInput input) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.Controls.Attributes.AttributeControlBase.GetAttributeControl (Opsive.Shared.Editor.UIElements.Controls.Attributes.AttributeControlBase+AttributeControlInput input) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddAttributeControl (UnityEngine.Object unityObject, System.Object target, System.Reflection.FieldInfo field, System.Int32 arrayIndex, System.String label, System.String tooltip, System.Boolean adjustLabelWidth, System.Object value, System.Action`2[T1,T2] onAddElement, System.Func`2[T,TResult] onChangeEvent, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddSingleField (Opsive.Shared.Editor.UIElements.FieldInspectorView+InspectorInput input) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddField (Opsive.Shared.Editor.UIElements.FieldInspectorView+InspectorInput input) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddField (UnityEngine.Object unityObject, System.Object target, System.Reflection.FieldInfo field, UnityEditor.SerializedProperty serializedProperty, System.Action`2[T1,T2] onAddElement, System.Action`1[T] onChangeEvent, System.Func`3[T1,T2,TResult] onValidateChange, System.Boolean searchBaseTypes, System.Action onResizeEvent, System.Boolean adjustLabelWidth, System.Collections.Generic.HashSet`1[T] ignoredFieldNames, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddFields (UnityEngine.Object unityObject, System.Object target, Opsive.Shared.Utility.MemberVisibility visibility, System.Action`2[T1,T2] onAddElement, System.Action`1[T] onChangeEvent, System.Func`3[T1,T2,TResult] onValidateChange, UnityEditor.SerializedProperty serializedProperty, System.Boolean searchBaseTypes, System.Action onResizeEvent, System.Boolean adjustLabelWidth, System.Collections.Generic.HashSet`1[T] ignoredFieldNames, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddFields (UnityEngine.Object unityObject, System.Object target, Opsive.Shared.Utility.MemberVisibility visibility, UnityEngine.UIElements.VisualElement container, System.Action`1[T] onChangeEvent, UnityEditor.SerializedProperty serializedProperty, System.Func`3[T1,T2,TResult] onValidateChange, System.Boolean searchBaseTypes, System.Action onResizeEvent, System.Boolean adjustLabelWidth, System.Collections.Generic.HashSet`1[T] ignoredFieldNames, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.UltimateCharacterController.Editor.Controls.Types.AbilityDrawers.RagdollInspectorDrawer.CreateDrawer (UnityEngine.Object unityObject, System.Object target, UnityEngine.UIElements.VisualElement container, System.Func`3[T1,T2,TResult] onValidateChange, System.Action`1[T] onChangeEvent) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Controls/AbilityDrawers/RagdollDrawer.cs:37)
    Opsive.UltimateCharacterController.Editor.Controls.Types.AbilityDrawers.AbilityControlType.GetHeaderControl (UnityEngine.Object unityObject, System.Object target, System.Reflection.FieldInfo field, UnityEditor.SerializedProperty serializedProperty, System.Int32 arrayIndex, System.Type type, System.Object value, System.Func`2[T,TResult] onChangeEvent, System.Object userData) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Controls/AbilityDrawers/AbilityControl.cs:83)
    Opsive.UltimateCharacterController.Editor.Controls.Types.StateObjectControlType.GetControl (Opsive.Shared.Editor.UIElements.Controls.Types.TypeControlBase+TypeControlInput input) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Controls/Types/StateObjectControl.cs:39)
    Opsive.Shared.Editor.UIElements.Controls.Types.TypeControlBase.GetTypeControl (Opsive.Shared.Editor.UIElements.Controls.Types.TypeControlBase+TypeControlInput input) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddTypeControl (UnityEngine.Object unityObject, System.Object target, System.Reflection.FieldInfo field, UnityEditor.SerializedProperty serializedProperty, System.Int32 arrayIndex, System.Type type, System.String label, System.String tooltip, System.Boolean adjustLabelWidth, System.Object value, System.Boolean searchBaseTypes, System.Action`2[T1,T2] onAddElement, System.Func`2[T,TResult] onChangeEvent, System.Action onResizeEvent, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddFields (UnityEngine.Object unityObject, System.Object target, Opsive.Shared.Utility.MemberVisibility visibility, System.Action`2[T1,T2] onAddElement, System.Action`1[T] onChangeEvent, System.Func`3[T1,T2,TResult] onValidateChange, UnityEditor.SerializedProperty serializedProperty, System.Boolean searchBaseTypes, System.Action onResizeEvent, System.Boolean adjustLabelWidth, System.Collections.Generic.HashSet`1[T] ignoredFieldNames, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.FieldInspectorView.AddFields (UnityEngine.Object unityObject, System.Object target, Opsive.Shared.Utility.MemberVisibility visibility, UnityEngine.UIElements.VisualElement container, System.Action`1[T] onChangeEvent, UnityEditor.SerializedProperty serializedProperty, System.Func`3[T1,T2,TResult] onValidateChange, System.Boolean searchBaseTypes, System.Action onResizeEvent, System.Boolean adjustLabelWidth, System.Collections.Generic.HashSet`1[T] ignoredFieldNames, System.Object userData) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.UltimateCharacterController.Editor.Inspectors.Character.UltimateCharacterLocomotionInspector.ShowAbility (System.Boolean abilities, System.Int32 index) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Inspectors/Character/UltimateCharacterLocomotionInspector.cs:621)
    Opsive.UltimateCharacterController.Editor.Inspectors.Character.UltimateCharacterLocomotionInspector+<>c__DisplayClass38_0.<AddAbilityList>b__3 (System.Int32 index) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Inspectors/Character/UltimateCharacterLocomotionInspector.cs:504)
    Opsive.Shared.Editor.UIElements.ReorderableList.SelectItem (System.Int32 index) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.Shared.Editor.UIElements.ReorderableList.set_SelectedIndex (System.Int32 value) (at <d96f8eec336a46ac9a2118208d76f915>:0)
    Opsive.UltimateCharacterController.Editor.Inspectors.Character.UltimateCharacterLocomotionInspector.AddAbility (System.Object obj) (at Assets/THIRD_PARTY_ASSETS/Opsive/UltimateCharacterController/Editor/Inspectors/Character/UltimateCharacterLocomotionInspector.cs:643)
    UnityEditor.GenericMenu.CatchMenu (System.Object userData, System.String[] options, System.Int32 selected) (at <24e1ed8728684ea3ae446f80787d18de>:0)


    My setup:
    Unity version: 2022.3.31f1
    Render pipeline: HDRP 14.0.10
    Ultimate Character Controller version: 3.1
    Moved folder location to: Assets/THIRD_PARTY_ASSETS
     
  18. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Can you post this on the forum at https://opsive.com/forum? This will allow me to track support requests better. Also make sure you've downloaded the controller from the package manager using the version of Unity that you are using.
     
  19. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    DrMeatball likes this.
  20. rrahim

    rrahim

    Joined:
    Nov 30, 2015
    Posts:
    207
    Hi, is there an upgrade price for persons who own both UFPS and Third Person Controller?
     
  21. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    If you own version 3 of the character controller then unfortunately it's not possible to combine the two purchases into a single Ultimate Character Controller purchase. On the Asset Store it's not possible to set a free upgrade if two assets are already purchased.
     
  22. _geo__

    _geo__

    Joined:
    Feb 26, 2014
    Posts:
    1,433
    New customer here with some feedback.

    First I want to let you know that your installer window looks like this in Unity 2022.3.25f1 LTS:
    upload_2024-6-10_18-37-19.png

    Not sure why it's cut off but since it's not resizable it might be a real issue in case it gets even smaller in other Unity versions (button could be completely cut off). I docked the window to make sure I am not missing any crucial infos.

    I like the pre-install checks. Did not know Asset Review let's you get by with nothing but an installer package.

    One downside of this: As a customer I do not really like this as I like to scan through the included assets list in the store before purchase to check if the code is hidden in DLLs (which I don't like) or plain .cs files (which I like). Especially if the store page does not specify whether or not the source code is included. Yours are .cs files, which is great, but I had to take a leap of faith to find out.



    Also in URP the demo scene looks like this (material shaders being Built-In). Would have been nice if the demo upgraded them automatically.
    upload_2024-6-10_19-5-56.png

    No biggie since it can be easily ugraded (though not all users may know this option exists):
    upload_2024-6-10_19-6-57.png

    upload_2024-6-10_19-7-24.png


    What I found a bit odd (am sure it can be configured) is that in the locomotion demo the character always tries to look at the position of the crosshair. It looks a bit weird if moving towards the camera:
    CharacterWeird-Com.gif

    Just some impressions from a first-time user. Hope these are helpful :)
     
    Last edited: Jun 10, 2024
    Mark_01 likes this.
  23. _geo__

    _geo__

    Joined:
    Feb 26, 2014
    Posts:
    1,433
    Sometimes the foot position gets out of hand. Can we set some limitations on that?
    upload_2024-6-10_19-27-48.png

    Opening the demo scene in the editor produces these errors (they do not appear at runtime). Maybe some of the materials failed to convert properly?
    upload_2024-6-10_19-34-13.png

    The Blur material seems to be the culprit (UIBlur shader):
    upload_2024-6-10_19-47-32.png

    Found a thread on this in the Opsive forum:
    https://www.opsive.com/forum/index.php?threads/several-issues-with-ucc-and-urp-unity-2021-2022.9924/
    I assume it's because this uses a surface shader, which is not part of URP (grab pass). Would be nice to remove this from the demo as it's not a very nice demo experience for URP users.

    It's a completely empty project the only thing I have imported is the controller.




    After mounting the horse I could only shoot once with the bow and arrow. Is that a bug or is that how it's supposed to work?
    upload_2024-6-10_19-58-11.png
    Also at some point the rider stopped animating along with the horse. The character just sat on the horse not animating while the horse did animate.
     

    Attached Files:

    Last edited: Jun 11, 2024
  24. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    @_geo__ - thanks, I'll increase the height of that asset checker. For the other topics can you post on the forum at https://opsive.com/forum? This will allow me to track the requests better. There are settings for the IK limits under the CharacterIK component, and if you have FinalIK there are even more settings exposed through that integration :)

    The demo scene does only use the built-in render pipeline. For your own scene make sure you first import the URP integration: https://opsive.com/support/documentation/ultimate-character-controller/integrations/universal-render-pipeline/

    I was also not able to reproduce the arrow no longer firing on the horse so if you can give more details on that I'd appreciate it!
     
    Last edited: Jun 11, 2024
  25. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    On the next Game Dev Insiders we have power user @Cheo6 on the show. He will be talking about his project Purple Eye that uses the Ultimate Character Controller. We'd love for you to join us when the show starts in just less than three hours!



    We'll also be taking questions after talking about Cheo's project. It's a good opportunity to get those questions solved immediately and can also get input from Cheo on how he would solve a particular problem.
     
  26. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    Version 3.1.1 has been released. You can see what has changed at https://opsive.com/news/ultimate-character-controller-3-1-1-released

    This version changes the Shared.Runtime structure. Before importing ensure you have first removed the Opsive/Shared and Opsive/UltimateCharacterController folder (remember to backup!).

    All of the add-ons were also updated.
     
  27. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,149
    On the most recent episode of Game Dev Insiders we had the developers of YAARRGH! on the show. It was a fun discussion as they talked about how they started with version 1 of UFPS, upgraded to version 2, and are currently on version 3. They also released a free Netcode for GameObjects integration with the controller. Their game looks like a ton of fun and I'm looking forward to playing it.