コミュニティQ&A

Audiokineticのコミュニティ主導のQ&Aフォーラムへようこそ。ここはWwiseとStrataのユーザのみなさまがお互いに協力し合う場です。弊社チームによる直接のサポートをご希望の場合はサポートチケットページをご利用ください。バグを報告するには、Audiokinetic LauncherのBug Reportオプションをご利用ください。(Q&AフォーラムではBug Reportを受け付けておりませんのでご注意ください。専用のBug Reportシステムをご利用いただくことで、バグの報告が適切な担当部門に届き、修正される可能性が高まります。)

最適な回答を迅速に得られるよう、ご質問を投稿される際は以下のヒントをご参考ください。

  • 具体的に示す:何を達成したいのか、またはどんな問題に直面しているのかを具体的に示してください。
  • 重要な詳細情報を含める:Wwiseとゲームエンジンのバージョンやご利用のOSなど詳細情報を記載してください。
  • 試したことを説明する:すでに試してみたトラブルシューティングの手順を教えてください。
  • 事実に焦点を当てる:問題の技術的な事実を記載してください。問題に焦点を当てることで、ほかのユーザのみなさまが解決策を迅速に見つけやすくなります。

0 支持
Foremost, I am attempting to teach myself what I can with C# on my spare time. I have had very minimal instruction on C# coding thus far (via Udemy), but am also attempting to practice what I can based on examples. I have become comfortable with posting events with code, and am trying to graduate up to controlling RTPC's with code.

Essentially, I have a Blend Container set up in Wwise, with five different engine loops at various RPMs, each with slight graduating pitch. In Unity, I am using the Car from the Standard Assets as my test subject. Additionally in Unity, I started a new script on the vehicle controller, and am successfully starting the engine with a PostEvent, like so:

-----------------------------------------------------------------------------

public class Engine : MonoBehaviour {

    private string StartEngine = "Engine"

    void Start () {

        AkSoundEngine.RegisterGameObj(gameObject);

    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            AkSoundEngine.PostEvent(StartEngine, gameObject);
        }

 --------------------------------------------------------------------

Next, for calling my Game Sync / Parameter, "EngineRTPC" I know that I need something in the ballpark of this:

------------------------------------------------------------------------

        {
           
            AkSoundEngine.SetRTPCValue("EngineRTPC", gameObject);
        }

---------------------------------------------------------------------

... but am stuck on what line of code I need above that to attach to the speed of the vehicle.

I have tried various combinations, with GetSpeed, mathf, Vector3, float, GetComponent, velocity, etc; but fear I'm way in over my head, with seemingly what might be one line of code.

Any help and / or explanation would be most appreciated!
Dennis B. (100 ポイント) General Discussion
After some tinkering with some, most appreciated, help from various sources (here on the AudioKinetic Q&A as well as the Wwise Wwizards & Wwitches facebook group), I ran across a video by Bjorn Jacobsen that breaks this down to the bare bones of controlling an RTPC via the speed of a rigidbody. Hope this helps others as well: https://youtu.be/xkB17uhKeMw

回答 1

0 支持

Hey Dennis, 

First off, are you aware that you are inputting the game object and not a float value into the .SetRTPCValue() function? 
You probably want it to look something like this: 
AkSoundEngine.SetRTPCValue("EngineRTPC", 23f);
where 23 is the value you set the RTPC to, and f means that it is a float value (the type of property that the function needs). 

Here's a suggestion to how you can get started, where you can change a slider to easier test your implementation.  

Start by making a float property, like...
[Range(0f,100f)] // This just displays a nice slider in Unity's inspector, that you can interact with. 
public float speedValueOfCar = 50; // Insert this outside any functions, but inside your script class. 

And then inside the update function could look like this: 
void Update() {
    if (Input.GetKeyDown(KeyCode.Space)) {
        AkSoundEngine.PostEvent(StartEngine, gameObject);
        }
        AkSoundEngine.SetRTPCValue("EngineRTPC", speedValueOfCar);
}

Now save, and then return to Unity, click Play, start the sound and try out the slider. 

Tip: Do you know about Wwise-Types? They can be a bit simpler to call, compared to AkSoundEngine functions. To start with your example, you could do this instead: 
    [Range(0f,100f)]
    public float speedValueOfCar = 50;
    public AK.Wwise.RTPC CarSoundRTPC; 

    void Update()
    {
        CarSoundRTPC.SetGlobalValue(speedValueOfCar);
    }

And then you'd get a nice button in the inspector, where you can select an Event and not have to check for typos. 

Does this make it clearer? 

Mads Maretty S. (Audiokinetic) (40.2k ポイント)
Wow, thanks so much, Mads! I'll give these techniques a try and will repost on how it worked out! Cheers!
...