#Setting speech speed

1 messages · Page 1 of 1 (latest)

weary grove
#

C.character.Say (____) produces a text which disappears too quickly. I cannot find an option to slow it down and I did look a lot. Is there a characters per minute or words per minute setting somewhere?

plucky sandal
#

you can find a "Text Speed Multiplier" in PQ tab under Tools

#

it's defined in QuestSettings.cs

#

TextSpeedMultiplier

weary grove
#

Found it! But, it appears to have no effect. I tried to set it to 0.1 from 1.0, still same speed.

lament plover
#

you could extend the say command in powerquest extensions, let me write down a few lines

#

I did it for my game's trailer

#

in PowerQuestExtensions.cs
in the ICharacter interface, add

public Coroutine SayWithTime(string dialog, float time, int id = -1);

then in the Character class

IEnumerator CoroutineSayWithTime(string text, float time, int id = -1)
{
  if (PowerQuest.Get.GetStopWalkingToTalk())
    StopWalking();
  if (PowerQuest.Get.GetSkippingCutscene())
    yield break;

  StartSay(text, id);
  yield return PowerQuest.Get.WaitForDialog(time, m_dialogAudioSource, PowerQuest.Get.GetShouldSayTextAutoAdvance(), true);
  EndSay();
}

public Coroutine SayWithTime(string dialog, float time, int id = -1)
{
  if (m_coroutineSay != null)
  {
    PowerQuest.Get.StopCoroutine(m_coroutineSay);
    EndSay();
    PowerQuest.Get.OnSay();
  }

  if (CallbackOnSay != null)
    CallbackOnSay.Invoke(dialog, -1);

  m_coroutineSay = CoroutineSay(dialog, time);
  return PowerQuest.Get.StartCoroutine(m_coroutineSay);
}
#

then just call SayWithTime("hello",50) and you'll get a sentence that will stay up for 50 seconds 😛 but beware because I don't know how this reacts with both the quest script editor (I guess you have to manually write the yield return) and the systemtext script to localize

#

so for voiceover and translation, if it's something that happens once or twice in the whole game you can make up for it manually, just add the same sentences in a script that's never being called in a normal say command and you'll get some IDs generated, and then pass those IDs to your SayWithTime