squidGame/tgx-games-client/assets/module_arean/scripts/AreanGameAudioMgr.ts

90 lines
2.4 KiB
TypeScript

import { AudioClip } from "cc";
import { tgxAudioMgr } from "../../core_tgx/tgx";
import { ModuleDef } from "../../scripts/ModuleDef";
const BundleName = ModuleDef.Arean;
export class AreanGameAudioMgr {
/**
* @en
* play short audio, such as strikes,explosions
* @zh
* 播放短音频,比如 打击音效,爆炸音效等
* @param sound clip or url for the audio
* @param volume
*/
public static playOneShot(sound: AudioClip | string, volume: number = 1.0) {
// console.log(sound);
tgxAudioMgr.inst.playOneShot(sound, volume, BundleName);
}
/**
* @en
* play long audio, such as the bg music
* @zh
* 播放长音频,比如 背景音乐
* @param sound clip or url for the sound
* @param volume
*/
public static play(sound: AudioClip | string, volume: number = 1.0,) {
tgxAudioMgr.inst.play(sound, volume, BundleName);
}
/**
* stop the audio play
*/
public static stop() {
tgxAudioMgr.inst.stop();
}
/**
* pause the audio play
*/
public static pause() {
tgxAudioMgr.inst.pause();
}
/**
* resume the audio play
*/
public static resume() {
tgxAudioMgr.inst.resume();
}
public static getVolumeByDist(soundPos: { x: number, y: number, z: number }, earPos: { x: number, y: number, z: number }, maxDist: number = 50.0) {
let dx = soundPos.x - earPos.x;
let dy = soundPos.y - earPos.y;
let dz = 0;
let dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
if (dist < 1.0) {
return 1.0;
}
let factor = 1.0 / (dist / maxDist);
if (factor > 1.0) {
factor = 1.0;
}
return factor
}
}
export enum AreanAudioName {
= 'res/Audio/arrow',
1 = 'res/Audio/bgm1',
= 'res/Audio/boom',
= 'res/Audio/crossbow',
= 'res/Audio/electric',
= 'res/Audio/horse',
1 = 'res/Audio/metal1',
2 = 'res/Audio/metal2',
= 'res/Audio/meteorite',
= 'res/Audio/trumpet',
= 'res/Audio/closeWin',
= 'res/Audio/openWin',
= 'res/Audio/camera',
= 'res/Audio/warning',
= 'res/Audio/bub',
= 'res/Audio/levelup',
= 'res/Audio/dragIn',
= 'res/Audio/die',
= 'res/Audio/bub',
}