From 2faa1c577f9bc69f8f608914205c19a891704e41 Mon Sep 17 00:00:00 2001 From: unknown <john.schihada@hotmail.com> Date: Sun, 1 Mar 2020 18:37:26 +0100 Subject: [PATCH] Fixed some TaskCharacter- and typing-bugs --- .../Character_Animations/CharacterDialog.cs | 4 ++ .../TaskCharakterAnimation.cs | 64 +++++++++++-------- ...easant_01_e_Animator Controller.controller | 12 ++-- 3 files changed, 47 insertions(+), 33 deletions(-) diff --git a/Assets/InteractionEngine/Character_Animations/CharacterDialog.cs b/Assets/InteractionEngine/Character_Animations/CharacterDialog.cs index 928f988a..c1183086 100644 --- a/Assets/InteractionEngine/Character_Animations/CharacterDialog.cs +++ b/Assets/InteractionEngine/Character_Animations/CharacterDialog.cs @@ -94,6 +94,10 @@ public void NextSentence() { textReseted = false; } else { + letterIndex = 0; + typingActive = false; + timer = 0; + textReseted = false; textDisplay.text = ""; } } diff --git a/Assets/InteractionEngine/Character_Animations/TaskCharakterAnimation.cs b/Assets/InteractionEngine/Character_Animations/TaskCharakterAnimation.cs index 0c3cec17..b9453db0 100644 --- a/Assets/InteractionEngine/Character_Animations/TaskCharakterAnimation.cs +++ b/Assets/InteractionEngine/Character_Animations/TaskCharakterAnimation.cs @@ -12,6 +12,8 @@ public class TaskCharakterAnimation : MonoBehaviour private Transform currentTransform; private float currentDistance; + //When changing walking/standing/happy booleans -> the state-variables in the animationController must also be changed + //For change of the task-character movements, maybe the transitions in the animationController have also to be adjusted private float walkingTime = 5; private bool walking = true; private float standingTime = 3; @@ -51,9 +53,10 @@ void Update() this.walking = false; this.standing = true; this.timer = 0; + rotate = false; //Change boolean for switching to Standing-State in AnimationController anim.SetBool("standing", true); - //Enable enter-key for talking + //Enable enter-key for talking for Charakter-Dialog setPlayerInTalkingZone(true); //Face walkAroundObject to Player (but only on y-Axis, so ignore x-and z-axis) @@ -64,24 +67,6 @@ void Update() else { //disable enter-key for talking setPlayerInTalkingZone(false); - //Change to walking State after Talking Zone so that player can stay inside the radiusAroundObject - rotate = false; - this.timer = 0; - //Change boolean for switching to Walking-State in AnimationController - anim.SetBool("standing", false); - } - - //Calculate distance from tree, so that the TaskCharacter only walks in a specific radius around the tree - //so that the player always knows where he is - currentDistance = (currentTransform.position - walkAroundObject.transform.position).magnitude; - - //Turn on the radius-edges around the radiusAroundObject - if (currentDistance > radiusAroundObject) - { - //Change roation if TaskCharacter is at the edges of the radius - currentTransform.RotateAround(currentTransform.position, Vector3.up, 30 * Time.deltaTime); - //return, because at the radius-edges we only want to rotate without standing/walking - return; } this.timer += Time.deltaTime; @@ -124,11 +109,35 @@ void Update() this.standing = false; this.walking = true; this.timer = 0; - //Rotate Character randomly - nextRotation = Random.Range(0, 180); - int positive = (int)Random.Range(0, 2); - if (positive == 0) - nextRotation *= -1; + + //Calculate distance from tree, so that the TaskCharacter only walks in a specific radius around the tree + //so that the player always knows where he is + currentDistance = (currentTransform.position - walkAroundObject.transform.position).magnitude; + //Turn on the radius-edges around the radiusAroundObject + if (currentDistance > radiusAroundObject) + { + //Rotate Towards tree if radiusAroundObject is out of radius + //Rotate randomly between +/-5° towards the radiusAroundObject + int temp = Random.Range(0, 5); + int positive = (int)Random.Range(0, 2); + //Calculate NextRotation towards radiusAroundObject + nextRotation = Vector3.Angle(currentTransform.forward, (walkAroundObject.transform.position-currentTransform.position).normalized); + + if (positive == 0) + nextRotation -= temp; + else + nextRotation += temp; + } + else + { + //Rotate Character randomly if radiusAroundObject is inside the radius + //Rotate inside the range of -180° and 180° because a normal human would turn e.g. -60° instead of 240° + nextRotation = Random.Range(0, 180); + int positive = (int)Random.Range(0, 2); + if (positive == 0) + nextRotation *= -1; + } + rotationUnits = nextRotation / (rotationTime/Time.deltaTime); rotate = true; } @@ -153,12 +162,13 @@ public void stopHappy(Fact startFact) { public void resetToStart() { //On Reset: Player must go into walking state, because it could be that after the happy/running-animation the player is //out of radius and rotates -> AnimationController StateMachine always changes into walking-state after hyppAnimation - walking = true; - standing = false; - rotate = true; + walking = false; + standing = true; + rotate = false; nextRotation = 0; rotationUnits = 0; playerInTalkingZone = false; + timer = 0; } //Static Method for CharacterDialog diff --git a/Assets/Polytope Studio/Lowpoly Medieval Characters/Sources/Animations/Anim_controllers/PT_Medieval_Peasant_01_e_Animator Controller.controller b/Assets/Polytope Studio/Lowpoly Medieval Characters/Sources/Animations/Anim_controllers/PT_Medieval_Peasant_01_e_Animator Controller.controller index cd62b77b..d62d9641 100644 --- a/Assets/Polytope Studio/Lowpoly Medieval Characters/Sources/Animations/Anim_controllers/PT_Medieval_Peasant_01_e_Animator Controller.controller +++ b/Assets/Polytope Studio/Lowpoly Medieval Characters/Sources/Animations/Anim_controllers/PT_Medieval_Peasant_01_e_Animator Controller.controller @@ -47,7 +47,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: walkAroundObject: {fileID: 0} ---- !u!1101 &1101065367606003302 +--- !u!1101 &1101341565081408182 AnimatorStateTransition: m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} @@ -59,16 +59,16 @@ AnimatorStateTransition: m_ConditionEvent: solved m_EventTreshold: 0 m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102240409349395686} + m_DstState: {fileID: 1102119675311824806} m_Solo: 0 m_Mute: 0 m_IsExit: 0 serializedVersion: 3 - m_TransitionDuration: 0 + m_TransitionDuration: 0.25 m_TransitionOffset: 0 - m_ExitTime: 3 + m_ExitTime: 0.5639534 m_HasExitTime: 0 - m_HasFixedDuration: 1 + m_HasFixedDuration: 0 m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 @@ -239,7 +239,7 @@ AnimatorState: m_Speed: 2 m_CycleOffset: 0 m_Transitions: - - {fileID: 1101065367606003302} + - {fileID: 1101341565081408182} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 -- GitLab