- Home /
Question by
Amer ALhwifi · Apr 11, 2014 at 12:08 AM ·
networkingaudiofpsphotonsync
Syncing FPS Firing Sound over network via RPC {PHOTON}
Hello Guys , I'm having troubles with @RPC to sync My sounds on the network . I want to Sync the Firing Sound , so the other players can hear it .
Here is my sound code :
var drawAnim : String = ""; // animation of taking out weapon.
var drawReturnAnim : String = ""; // putting back weapon (playing draw animation backwards)
var fireAnim : String = "";
var reloadAnim : String = "";
var fireEmptyAnim : String = ""; //if you dont have this specific animation, you can use your "Fire" animation.
var idleAnim : String = "";
var drawAnimSpeed : float = 1.0;
var drawReturnSpeed : float = 2.0;
var reloadAnimSpeed : float = 1.0;
var fireSound : AudioClip;
var soundGO : GameObject;
var drawSound : AudioClip;
var reloadSound : AudioClip;
var outOfAmmo : AudioClip;
//Shotgun Animations
var startReload : String = "StartReload";
var insertBullet : String = "Insert";
var endReload : String = "AfterReload";
var SGinsert : AudioClip;
var SGpump : AudioClip;
var weaponScript : WeaponScript;
//Only for Crossbow
var idleLoadedAnim : String = "";
var audioShellEject : AudioClip;
private var step : boolean = true;
function OnEnable () {
step = true;
}
function Start(){
//animation.wrapMode = WrapMode.Once;
if(idleAnim != "") animation[idleAnim].wrapMode = WrapMode.Loop;
if(idleLoadedAnim != "") animation[idleLoadedAnim].wrapMode = WrapMode.Loop;
if(weaponScript.typeOfFireMode == fireMode.Shotgun){
animation[endReload].layer = 5;
}
}
function Update(){
if(idleAnim != ""){
if(!animation.isPlaying){
if(weaponScript.typeOfFireMode == fireMode.Launcher){
if(weaponScript.numberOfClips == 0){
animation.CrossFadeQueued(idleLoadedAnim, 0.3, QueueMode.PlayNow);
}else{
animation.CrossFadeQueued(idleAnim, 0.3, QueueMode.PlayNow);
}
}else{
if(weaponScript.reloading == false) animation.CrossFadeQueued(idleAnim, 0.8, QueueMode.PlayNow);
}
}
}
}
@RPC
function PlayOutOfAmmo(){
step = false;
if(!animation.IsPlaying(fireAnim)){
if(fireEmptyAnim != ""){
PlayAudioClip(outOfAmmo, transform.position, 1.0);
animation.Rewind(fireEmptyAnim);
animation.Play(fireEmptyAnim);
step = true;
}
}
}
@RPC
function PlayAudioEject(){
step = false;
audio.PlayOneShot(audioShellEject, 1.0);
step = true;
}
@RPC
function ReturnReloading(){
step = false;
if(idleAnim != ""){
if(weaponScript.typeOfFireMode == fireMode.Launcher){
if(weaponScript.bulletsLeft == 0){
animation.CrossFadeQueued(idleLoadedAnim, 0.5, QueueMode.PlayNow);
//audio.Stop();
//animation.Play(idleLoadedAnim);
}else{
animation.CrossFadeQueued(idleAnim, 0.01, QueueMode.PlayNow);
audio.Stop();
animation.Play(idleAnim);
}
soundGO.audio.Stop();
audio.Stop();
}else if(weaponScript.typeOfFireMode == fireMode.Shotgun){
//animation.CrossFadeQueued(idleAnim, 0.9, QueueMode.PlayNow);
soundGO.audio.Stop();
audio.Stop();
animation.Play(idleAnim);
}else{
animation.CrossFade(idleAnim, 0.2);
soundGO.audio.Stop();
audio.Stop();
step = true;
}
}
}
@RPC
function PlayFireAnimAuto(){
step = false;
if(fireAnim != ""){
animation.Rewind(fireAnim);
animation.Play(fireAnim);
//audio.PlayOneShot(fireSound,1.0);
PlayAudioClip(fireSound, transform.position, 1.0);
step = true;
}
}
@RPC
function PlayFireAnimSemi(){
step = false;
if(fireAnim != ""){
animation.CrossFadeQueued(fireAnim, 0.1, QueueMode.PlayNow);
//PlayAudioClip(fireSound, transform.position, 0.7);
audio.clip = fireSound;
audio.volume = 1.0;
audio.Play();
step = true;
}
}
function DrawWeapon(){
if(drawAnim != ""){
soundGO.audio.Stop();
audio.clip = drawSound;
audio.volume = 0.7;
audio.Play();
animation.Stop(drawAnim);
animation[drawAnim].speed = drawAnimSpeed;
animation.Play(drawAnim);
}
}
function PutDownWeapon(){
if(drawReturnAnim != ""){
audio.clip = drawSound;
audio.volume = 0.7;
audio.Play();
animation[drawReturnAnim].speed = drawReturnSpeed;
animation.Play(drawReturnAnim);
}
}
function QuickPutDownWeapon(){
if(drawReturnAnim != ""){
animation[drawReturnAnim].speed = drawReturnSpeed*2;
animation.CrossFade(drawReturnAnim);
}
}
function ReloadWeapon(){
if(reloadAnim != ""){
soundGO.audio.clip = reloadSound;
soundGO.audio.volume = 1.0;
soundGO.audio.Play();
animation[reloadAnim].speed = reloadAnimSpeed;
animation.Play(reloadAnim);
}
}
//Shotgun
function ReloadStart(){
animation[startReload].time = 0.0;
animation.Play(startReload);
}
@RPC
function InsertBullet(){
animation[insertBullet].time = 0.0;
//animation.Rewind(insertBullet);
animation.PlayQueued(insertBullet, QueueMode.PlayNow);
//animation.Play(insertBullet);
audio.PlayOneShot(SGinsert, 1.0);
}
@RPC
function ReloadStop(){
animation[endReload].speed = 2;
animation.Play(endReload);
yield WaitForSeconds(0.2);//delay, before sound will start play.
audio.clip = SGpump;
audio.volume = 1.0;
audio.Play();
}
function ResetReloading(){
soundGO.audio.Stop();
audio.Stop();
animation.Stop();
animation[insertBullet].time = 0.0;
animation[startReload].time = 0.0;
}
function PlayAudioClip (clip : AudioClip, position : Vector3, volume : float) {
var go = new GameObject ("One shot audio");
go.transform.position = position;
var source : AudioSource = go.AddComponent (AudioSource);
source.clip = clip;
source.volume = volume;
source.pitch = Time.timeScale;
source.Play ();
Destroy (go, clip.length);
return source;
}
Just tell me how . Any Help will be highly appreciated !
Thanks in Advance!
Comment
Your answer
Follow this Question
Related Questions
Photon Networking Instantiating Problem 0 Answers
Photon only shows host their changes to players, not other way around 1 Answer
Unity PhotonNetwork globally enable a component 1 Answer
how to sync audio in instantiated object so all players can hear it? 0 Answers
Photonview "this" does not exist in current context 1 Answer