커뮤니티 Q&A

Audiokinetic의 커뮤니티 Q&A 포럼에 오신 것을 환영합니다. 이 포럼은 Wwise와 Strata 사용자들이 서로 도움을 주는 곳입니다. Audiokinetic의 직접적인 도움을 얻으려면 지원 티켓 페이지를 사용하세요. 버그를 보고하려면 Audiokinetic 런처에서 Bug Report 옵션을 사용하세요. (Q&A 포럼에 제출된 버그 보고는 거절됩니다. 전용 Bug Report 시스템을 사용하면 보고 내용이 담당자에게 정확히 전달되어 문제 해결 가능성이 크게 높아집니다.)<segment 6493>

빠르고 정확한 답변을 얻으려면 질문을 올릴 때 다음 팁을 참고하세요.

  • 구체적인 내용을 적어주세요: 무엇을 하려는지, 혹은 어떤 특정 문제에 부딪혔는지 설명하세요.
  • 핵심 정보를 포함하세요: Wwise와 게임 엔진 버전, 운영체제 등 관련 정보를 함께 제공하세요.
  • 시도한 방법들을 알려주세요: 문제 해결을 위해 이미 어떤 단계를 시도해봤는지 설명해주세요.
  • 객관적인 사실에 초점을 맞추세요: 문제의 기술적 사실을 중심으로 설명하세요. 문제에 집중할수록 다른 사람들이 더 빠르게 해결책을 찾을 수 있습니다.

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!
General Discussion Dennis B. (100 포인트) 로 부터
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!
...