Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wys豉ny: 2018-01-10, 23:46


noose

JEST� SKRYPTER�






Wiek: 35
Na forum: 3897 dni
Posty: 219

Piwa: 2295

Respekt: 155,8
Respekt: 155,8Respekt: 155,8

Witam! Uhh, d?uugo mnie tu nie by?o. To dlatego ?e ma?o ju? gram, i skryptuje. Je?li ju?, to okazjonalnie, dla siebie samego.
Przechodz?c do sedna mojego pytania, zacytuj? fragment z wikipedii:
"Naukowe badanie efektu po raz pierwszy przeprowadzi? Christoph Hendrik Diederik Buys Ballot w 1845 r. Poprosi? on grup? muzyk?w (tr?baczy), aby wsiedli do poci?gu i grali jeden ton. S?ucha? go i zaobserwowa?, ?e d?wi?k instrument?w jest wy?szy, gdy poci?g zbli?a si? do niego. Gdy ?r?d?o muzyki si? oddala, jego ton staje si? ni?szy."
Zauwa?y? to chyba ju? ka?dy, ?e efekt ten wyst?puje w grze. i jest na?o?ony chocia?by na obroty silnika, oraz klakson. Kiedy obok gracza przeje?d?a jaki? tr?bi?cy cej, to d?wi?k klaksonu jest wy?szy kiedy nadje?d?a, a kiedy ju? nas minie, ni?szy.
I moje pytanie jest nast?puj?ce: czy da si? to oskryptowa?? Ju? dawno chcia?em to zrobi?, tylko nie wiedzia?em, czy jest to mo?liwe :D
Dodawanie w?asnych d?wi?k?w do gry(np syren) jest fajne, niew?tpliwie, ale efekt by?by jeszcze lepszy, gdyby da?o sie wykorzysta? ten efekt na d?wi?kach 3d.
Fragment cytatu: https://pl.wikipedia.org/wiki/Efekt_Dopplera
Film: https://www.youtube.com/watch?v=___LDYTOIzw

Postaw piwo autorowi tego posta
 

 
Wys豉ny: 2018-01-11, 11:58


.RiV







Wiek: 26
Na forum: 3729 dni
Posty: 554
Nick w MP: Split

Piwa: 2598

Respekt: 597,8
Respekt: 597,8

Ja bym to zrobi? w renderingu tak:

- SetSoundVolume
- GetElementPosition

+ kilka oblicze?

Podpis

Autor OGRPG, na scenie MTA od 2012 roku.




U篡tkownik: 08.08.2016
GTAO Member: 06.02.2017
Support-Team: 17.06.2017 & 01.06.2019 - 18.11.2019
Moderator: 14.01.2018 - 09.08.2018

Postaw piwo autorowi tego posta
 

 
Wi璚ej szczeg馧闚
Wystawiono 1 piw(a):
noose
Wys豉ny: 2018-01-11, 17:10


noose

JEST� SKRYPTER�






Wiek: 35
Na forum: 3897 dni
Posty: 219

Piwa: 2295

Respekt: 155,8
Respekt: 155,8Respekt: 155,8

.WhiteBlue, je?li nie zrozumia?e? mojego zapytania, lub nie jeste? na tyle dobry w LUA by mi pom?c z tym, nie nabijaj sobie post?w ;)
Chodzi?o o ton d?wi?ku, nie g?o?no??. G?o?no?? d?wi?ku maleje automatycznie, je?li u?yjemy na nim setSoundMinDistance...

Postaw piwo autorowi tego posta
 

 
Wys豉ny: 2018-01-11, 17:38


.RiV







Wiek: 26
Na forum: 3729 dni
Posty: 554
Nick w MP: Split

Piwa: 2598

Respekt: 597,8
Respekt: 597,8

"noose" napisa�/a:

.WhiteBlue, je?li nie zrozumia?e? mojego zapytania, lub nie jeste? na tyle dobry w LUA by mi pom?c z tym, nie nabijaj sobie post?w ;)
Chodzi?o o ton d?wi?ku, nie g?o?no??. G?o?no?? d?wi?ku maleje automatycznie, je?li u?yjemy na nim setSoundMinDistance...


Nie wiem co chcesz wie?? daj?c mi minusow? reputacj? na forum. Na o?lep na pewno nie odpowiadam, gdybym chcia? nabi? posty, nabi?bym sobie posty w innych tematach ni? ten. A co do mojej pomocy, pyta?e? to odpowiedzia?em i to nie jest pow?d ?eby? wmawia? ?e nabijam posty.

Co do tematu:
- https://forum.mtasa.com/topic/69318-doppler-effect-in-mta/
- https://forum.mtasa.com/topic/24114-relwip-radio3d-for-mta-11/

Kt?ry? z tych temat?w powinien Ci pom?c.

Podpis

Autor OGRPG, na scenie MTA od 2012 roku.




U篡tkownik: 08.08.2016
GTAO Member: 06.02.2017
Support-Team: 17.06.2017 & 01.06.2019 - 18.11.2019
Moderator: 14.01.2018 - 09.08.2018

Postaw piwo autorowi tego posta
 

 
Wi璚ej szczeg馧闚
Wystawiono 1 piw(a):
noose
Wys豉ny: 2018-01-11, 19:21


noose

JEST� SKRYPTER�






Wiek: 35
Na forum: 3897 dni
Posty: 219

Piwa: 2295

Respekt: 155,8
Respekt: 155,8Respekt: 155,8

No dobraa, wzi??em pierwszy kod z forum z linka, kt?ry poda?e?, i nie powiem, co? tam dzia?a :D
Tylko ?e, skrypt nie rozpoznaje, czy gracz sie zbli?a, czy oddala. Np, jad?c infernusem w strone ?r?d?a d?wi?ku, ton tego d?wi?ku mala? dziwnie, od punktu 0, czyli od tak jakby warto?ci domy?lnej, a przy hamowaniu wzrasta? spowrotem, wi?c z realizmem ?rednio. Ale ju? mamy p?? roboty:D

Kod:


addEventHandler("onClientPreRender", root,
function ()
-- Get every sound
local sounds = getElementsByType("sound")

-- Abort if there is no sound active
if (#sounds == 0) then
return
end

-- Get if possible my vehicle
local me = getPedOccupiedVehicle(localPlayer)

-- Else use my ped
if (not isElement(me)) then
me = localPlayer
end

-- Get our position
local mpX, mpY, mpZ = getElementPosition(me)

-- Get our velocity
local mvX, mvY, mvZ = getElementVelocity(me)

-- Loop through the sounds
for index = 1, #sounds do
-- Get the current sound by index
local sound = sounds[index]

-- Get the element, which the sound is attached to
local attachedto = getElementAttachedTo(sound)

-- Continue if the sound is attached to a vehicle
if (isElement(attachedto) and getElementType(attachedto) == "vehicle") then
-- Get the vehicle's position
local tpX, tpY, tpZ = getElementPosition(attachedto)

-- Calculate the distance between him and us
local dX, dY, dZ = distance(mpX, mpY, mpZ, tpX, tpY, tpZ)

-- Get the actual length from the distance
local distance = getDistanceBetweenPoints3D(mpX, mpY, mpZ, tpX, tpY, tpZ)

-- Get the vehicle's velocity
local tvX, tvY, tvZ = getElementVelocity(attachedto)

-- Calculate the dotproduct from velocity and distance for the sender
local dpS = dotproduct(tvX, tvY, tvZ, dX, dY, dZ)

-- Calculate the dotproduct from velocity and distance for the receiver
local dpR = dotproduct(mvX, mvY, mvZ, dX, dY, dZ)

-- Calculate teh vs value for the sender
local vr = dpR / distance

-- Calculate the vr value for the receiver
local vs = dpS / distance

-- Calculate the frequency (modified formula to improve the effect in GTA)
local f = ((1 + vr) / (1 + vs)) * (4.5 * (vs - vr))

-- Adjust the sound speed and effect
local samplerate, _, _, reverse = getSoundProperties(sound)
setSoundProperties(sound, samplerate, f, f, reverse)
end
end
end
)

function distance(x, y, z, a, b, c)
return math.abs(a - x), math.abs(b - y), math.abs(c - z)
end

function dotproduct(x, y, z, a, b, c)
return math.abs(x * a) + math.abs(y * b) + math.abs(z * c)
end



Postaw piwo autorowi tego posta
 

 
Tagi: efekt :: dopplera
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wy鈍ietl posty z ostatnich:   
GTAONLINE.PL » J佖YKI PROGRAMOWANIA » LUA » Efekt Dopplera Ten temat jest zablokowany bez mo磧iwo軼i zmiany post闚 lub pisania odpowiedzi

Nie mo瞠sz pisa� nowych temat闚
Nie mo瞠sz odpowiada� w tematach
Nie mo瞠sz zmienia� swoich post闚
Nie mo瞠sz usuwa� swoich post闚
Nie mo瞠sz g這sowa� w ankietach
Dodaj temat do Ulubionych
Wersja do druku