UCC 3.3.5 Issues

Cheo

Active member
Hello, here's the usual bug report video for the latest update :


-Since at least one version ago, it is possible to hear the landing sfx when falling near a surface but not on it. This is reproducible in the double jump section of the demo scene.

-The player can't move on surfaces using the Frictionless physics material. Is this normal ?

-The demo UI for the boss stomp has two overlapping texts.

-The Ride section - do I even need to say it again ?

-The FPS arm objects can clip through walls by default. I tried looking for the URP setup steps for that, but the documentation page seems to have been removed.
 
I'll add to this thread - when building a new character and setting "Unity IK" to true, the CharacterBuilder doesn't add the CharacterIK component. Was this intentional?

Source Code:
C#:
public static void AddUnityIK(GameObject character)
        {
            var animatorMonitors = character.GetComponentsInChildren<AnimatorMonitor>();
            for (int i = 0; i < animatorMonitors.Length; ++i) {
                var animator = animatorMonitors[i].GetComponent<Animator>();
                if (animator == null || !animator.isHuman || animator.GetBoneTransform(HumanBodyBones.Head) == null) {
                    continue;
                }
            }
        }

Changes Made:
C#:
public static void AddUnityIK(GameObject character)
        {
            var animatorMonitors = character.GetComponentsInChildren<AnimatorMonitor>();
            for (int i = 0; i < animatorMonitors.Length; ++i) {
                var animator = animatorMonitors[i].GetComponent<Animator>();
                if (animator == null || !animator.isHuman || animator.GetBoneTransform(HumanBodyBones.Head) == null) {
                    continue;
                }
                animator.gameObject.AddComponent<CharacterIK>();
            }
        }
 
You can fix this in 3.3.8 by changing line 117 within Fall.cs from:

Code:
                    SurfaceManager.SpawnEffect(m_CharacterLocomotion.GroundedRaycastHit, m_LandSurfaceImpact, m_CharacterLocomotion.GravityDirection, m_CharacterLocomotion.TimeScale, m_GameObject, m_Transform.forward, false);
to:
Code:
                    // The ground cast can graze a nearby ledge. Confirm that the surface is beneath the resolved landing position.
                    // Include the collider radius so slopes can be detected when the character's pivot is above the surface.
                    var castOffset = m_CharacterLocomotion.Radius + m_CharacterLocomotion.SkinWidth;
                    var ray = new Ray(m_CharacterLocomotion.TargetPosition + m_CharacterLocomotion.Up * castOffset, -m_CharacterLocomotion.Up);
                    var groundCollider = m_CharacterLocomotion.GroundedRaycastHit.collider;
                    if (groundCollider != null && groundCollider.Raycast(ray, out var hit, castOffset * 2)) {
                        SurfaceManager.SpawnEffect(hit, m_LandSurfaceImpact, m_CharacterLocomotion.GravityDirection, m_CharacterLocomotion.TimeScale, m_GameObject, m_Transform.forward, false);
                    }
 
Thanks, it looks like the footstep code needs to change:

Within CharacterFootEffects.FootStep, change:

Code:
Mathf.Abs(m_CharacterLocomotion.LocalVelocity.y / TimeUtility.DeltaTime)

// To
Mathf.Abs(m_CharacterLocomotion.LocalVelocity.y * TimeUtility.DeltaTime)
 
The issue with the sfx played when not landing is now fixed, however this introduced a new issue : when standing magically in the air by being close enough to the ground and having Slide disabled, the land sfx does not play when jumping. From a realistic point of view this kinda makes sense, but if from the controller's point of view a collider is still preventing the character from falling that collider's surface should still be used to produce an SFX. In addition as you can see at around 0:07 in the attached recording the sfx did not play when jumping onto the lower pillar's surface.
 

Attachments

Back
Top