pipeParticle abfragen

  • Hallo erstmal


    ich wollte zum pipeParticle ein sound zuweisen, nur meine frage wie mach ich das am besten? ich hab selber versucht aber es will nicht so wie ich das will kann sein das schon zu späht ist? daswegen frage ich auch hier vieleicht kann mir jemand weiter helfen.


    ich danke euch in vorraus


    mfg jan



    [lua]
    --
    -- extrapipeSound
    -- Specialization for extrapipeSound
    --
    extrapipeSound = {};
    function extrapipeSound.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(combine, specializations);
    end;
    function extrapipeSound:load(xmlFile)
    local extrapipeSound = getXMLString(xmlFile, "vehicle.extrapipeSound#file");
    if extrapipeSound ~= nil and extrapipeSound ~= "" then
    extrapipeSound = Utils.getFilename(extrapipeSound, self.baseDirectory);
    self.extrapipeSoundPitchOffset = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.extrapipeSound#pitchOffset"), 0);
    self.extrapipeSoundRadius = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.extrapipeSound#radius"), 50);
    self.extrapipeSoundInnerRadius = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.extrapipeSound#innerRadius"), 10);
    self.extrapipeSoundVolume = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.extrapipeSound#volume"), 1);
    self.extrapipeSound = createAudioSource("extrapipeSound", extrapipeSound, self.extrapipeSoundRadius, self.extrapipeSoundInnerRadius, self.extrapipeSoundVolume, 0);
    link(self.components[1].node, self.extrapipeSound);
    setVisibility(self.extrapipeSound, false);
    end;
    end;
    function extrapipeSound:delete()
    end;
    function extrapipeSound:readStream(streamId, connection)
    end;
    function extrapipeSound:writeStream(streamId, connection)
    end;
    function extrapipeSound:mouseEvent(posX, posY, isDown, isUp, button)
    end;
    function extrapipeSound:keyEvent(unicode, sym, modifier, isDown)
    end;
    function extrapipeSound:update(dt)
    end;
    function extrapipeSound:updateTick(dt)
    if self.pipeParticleActivated = true;
    setVisibility(self.extrapipeSound, true);
    else
    setVisibility(self.extrapipeSound, false);
    end;
    end;
    [/lua]

  • Scheint mir sehr zusammengewürfelt..


    [lua] if self.pipeParticleActivated = true;
    setVisibility(self.extrapipeSound, true);
    else
    setVisibility(self.extrapipeSound, false);
    end;[/lua]
    Ist definitiv falsch..


    Zunächst geht eine If-Abfrage einer Boolschen Variablen so:
    [lua]if bedingung == true then
    -- mach irgendwas
    else
    -- mach was anderes
    end;[/lua]
    Wichtig, das == und das then..
    Im Allgemeinen sind solche Vergleichsoperatoren immer == --> ist gleich, ~= --> ist ungleich, > --> größer als, < --> kleiner als, >= --> größer/gleich als, <= --> kleiner/gleich als.
    Ein einfaches "=" wird verwendet um einer Variablen einen Wert zu zu weißen, aber niemals in einem Vergleich.
    (z.b. self.meineNeueVariable = 1; )



    Das nächste ist dass die Funktion "setVisibility(Transform ID, Bool);" dazu da ist, Objekte ein/auszublenden. Nicht um Sounds abzuspielen..



    LG

  • Ehm, er hat schon recht mit dem setVisibility. Soweit ich das sehe, erstellt er doch eine AudioSource und nicht kein Sample.


    Stellt man hierbei setVisibility auf false, ist der ton ebenfalls weg ;)


    Bei boolschen-Bedingungen kann das "==" im Nachhinein auch weggelassen werden. ;)


    MfG


    EDIT:


    Am Besten, schaust du dir die Honk-Specialization an und baust daraus ein neues Script.


    [lua]
    --## LOAD Teil ##--
    -- wir müssen zunächst die Funktion "umbenennen"
    -- aus self.playHonk = SpecializationUtil.callSpecializationsFunction("playHonk"); wird :
    self.playPipeUnloadSound= SpecializationUtil.callSpecializationsFunction("playPipeUnloadSound");


    -- self.honkPlaying wird zu self.pipeUnloadSoundPlaying | Desweiteren geben wir der Variable den Wert von self.pipeParticleActivated mit.
    self.pipeUnloadSoundPlaying = self.pipeParticleActivated;


    --## UPDATE Teil##--
    if self:getIsActiveForSound() then
    if self.pipeParticleActivated ~= self.pipeUnloadSoundPlaying then
    self:playPipeUnloadSound(self.pipeParticleActivated );
    end;
    end;
    [/lua]


    Natürlich musst du an allen Variablen Änderungen vornehmen, da sich sonst die Scripte überschneiden werden. Dies war nur ein kleiner Auszug wie ich es machen würde...

  • Hallo erstmal


    ich danke euch für eure Hilfe,hab ich erst versucht mit die honk lua, es hat funktioniert aber nur wen ich in den häcksler sas.


    dann hab ich mir nochmal das von oben vorgenommen was ich zusammen gewürfelt habe und es hat geklappt auch bei helfer. ich hab da nämlich erst die combine durch sterable ersetzt dann If-Abfrage == true then angepasst und noch draw hinzugefügt und läuft super(fast), leider hab ich noch ein kleines problem das der sound manchmal bisschen stottert also musste sich der sound nur paar sekunden später ausschalten,ich vermute das mit self.time könnte hinhauen nur ich habe keine ahnung wie? daswegen möchte ich euch wieder um hilfe bitten.


    mfg jan

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!