Beispiel #1
0
        public override void UpdateBehaviour(float dt)
        {
            Vector3 characterPosition = CharacterActor.Position;

            float targetAngularSpeed = CharacterActions.movement.value.x * angularSpeed;


            characterPosition = CustomUtilities.RotatePointAround(
                characterPosition,
                characterPosition + ClosestVectorToRope,
                targetAngularSpeed * dt,
                currentRope.BottomToTop.normalized
                );

            Vector3 targetAngularVelocity = (characterPosition - CharacterActor.Position) / dt;

            angularVelocity = Vector3.MoveTowards(angularVelocity, targetAngularVelocity, angularAcceleration * dt);


            Vector3 targetVerticalVelocity = CharacterActions.movement.value.y * climbSpeed * CharacterActor.Up;

            verticalVelocity = Vector3.MoveTowards(verticalVelocity, targetVerticalVelocity, verticalAcceleration * dt);

            CharacterActor.Velocity = verticalVelocity + angularVelocity;
        }