Probleme Emeteur+Son

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
darkfredor
Messages : 33
Inscription : 05 Jan 2010 01:05
Localisation : Haute Corse
Contact :

Probleme Emeteur+Son

Message par darkfredor » 01 Mai 2010 11:52

Bonjours
Cela fais maintenant trois jours que je tourne en ronds pour trouver une solution a ce script...
donc même si cela va paraitre évident pour certain ,moi je patoge dans la choucroute..... :(

voici le script

Code : Tout sélectionner

var target : Transform;
var range = 10.0;
var SpeedCiblage = 2.0;
var FrequenceTir = 0.05;
var LoockageCible = 2.0; 
var leftFlame : GameObject;
var rightFlame : GameObject;

static var mode = "idle";

function Awake()

  {
	  target = GameObject.FindWithTag("Player").transform;
	  leftFlame.renderer.enabled = false;
	  rightFlame.renderer.enabled = false;
  }



function Update () 
{
   if(target && CanAttackTarget())
   {
        //transform.LookAt(target);
         var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
         transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * SpeedCiblage);
  
         var forward =transform.forward;
         var targetDir = target.position - transform.position;
         var angle = Vector3.Angle(targetDir, forward);
         if(angle < 10.0)
      {
             
			  DoDamage();
	   }
        else
		{
		    
		}
  }
  
}
var damageTimer = 0.0;
function DoDamage()
{
  if(damageTimer==0.0)
  {
     damageTimer = Time.time;
  }
  if((damageTimer+0.05)  > Time.time)
  {
      return;
  }
  else
  {
  Player.HEALTH -= 1;
  print(Player.HEALTH);
  damageTimer = Time.time;
  }
}

function CanAttackTarget() 
{
   //Check if the target close enough
   if(Vector3.Distance(transform.position, target.position) > range)
   {
       Disengage();
       return false;
	}
	var hit : RaycastHit;
	
	//Check if  there collision inbetween turret and target
	if(Physics.Linecast(transform.position, target.position, hit))
	{
	   if(hit.collider.gameObject.tag != "Player")
	   {
	         Disengage();
	         return false;
	   }
	   else
	   {
	         Attack();
	         return true;
	   }
	}
	return true;
}

 function Attack()
 {
      if(mode != "attack")
      {
	    InvokeRepeating("FlaconAnimate", LoockageCible, FrequenceTir);
		mode = "attack";
		var other : GameObject;
        
	  }
	  
 }
 
 function Disengage()
 {
      if(mode != "idle")
	  {
	       CancelInvoke();
		   mode = "idle";
		   leftFlame.renderer.enabled = false;
		   rightFlame.renderer.enabled = false;
	  }
 }




function FlaconAnimate()
{  
      if(leftFlame && rightFlame)
          {
             if(leftFlame.renderer.enabled)
		      {
	         leftFlame.renderer.enabled = false;
			 
		     rightFlame.renderer.enabled = true;
	         }
	        else
	        {
	           leftFlame.renderer.enabled = true;
			  rightFlame.renderer.enabled = false;
			  
	        }
          }  


	else
	{
	 print("Effect on Turret not set! ");
	}
 }
Ce script détecte le perso a une distance donné,le cible,et active son tire(émetteur de particule),lui bouffe de la vie .....
et voici mon problème
je veux tous simplement mettre un sound qui s' active en même temps que l' émetteur de particule.
j'ai essayer de mettre le sound dans l'émetteur mais sa marche pas.
j'ai aussi essayer de caler un " var sound :audioclip; " mais en vain....
voila,je voudrais juste que le son qui est pour des turrets s'active .....rien de plus
Image

je remercie d'avance ceux qui ce pencherons sur ce casse tete,Merci
Image

Avatar de l’utilisateur
Sephis
Messages : 19
Inscription : 19 Avr 2010 16:47
Contact :

Re: Probleme Emeteur+Son

Message par Sephis » 01 Mai 2010 15:45

Essaye ça, il y a peut être une meilleur façon mais c'est comme ça que j'aurai fait :
met ton son en Audio source sur ta tourelle et ajoute ça à ton code

Code : Tout sélectionner

var sound : AudioClip;
...
function Attack()
{
      if(mode != "attack")
      {
       InvokeRepeating("FlaconAnimate", LoockageCible, FrequenceTir);
      if (sound) {
		audio.PlayOneShot(sound);
	  }
	  mode = "attack";
      var other : GameObject;
       
     }
    
}...
360 VR Player Starter Kit est disponible sur l'Asset Store.

Avatar de l’utilisateur
darkfredor
Messages : 33
Inscription : 05 Jan 2010 01:05
Localisation : Haute Corse
Contact :

[Resolu] Probleme Emeteur+Son

Message par darkfredor » 01 Mai 2010 18:01

Merci pour ta Réponse ,elle c'est avérez trés utile,car il me manquais juste ce petit mot magique....
if (sound)
{
audio.PlayOneShot(sound);
}
mais c'est grâce a sa que j'ai pue le caler ou il faut...

Un Grand Merci...
voici le code...

Code : Tout sélectionner

//LE PLACEMENT EST DIFFERENT DE TA SOLUTION....
var target : Transform;
var range = 10.0;
var SpeedCiblage = 2.0;
var FrequenceTir = 0.05;
var LoockageCible = 2.0; 
var leftFlame : GameObject;
var rightFlame : GameObject;
var sound : AudioClip;

static var mode = "idle";

function Awake()

  {
	  target = GameObject.FindWithTag("Player").transform;
	  leftFlame.renderer.enabled = false;
	  rightFlame.renderer.enabled = false;
  }



function Update () 
{
   if(target && CanAttackTarget())
   {
        //transform.LookAt(target);
         var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
         transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * SpeedCiblage);
  
         var forward =transform.forward;
         var targetDir = target.position - transform.position;
         var angle = Vector3.Angle(targetDir, forward);
         if(angle < 10.0)
      {
             
			  DoDamage();
	   }
        else
		{
		    
		}
  }
  
}
var damageTimer = 0.0;
function DoDamage()
{
  if(damageTimer==0.0)
  {
     damageTimer = Time.time;
  }
  if((damageTimer+0.05)  > Time.time)
  {
      return;
  }
  else
  {
  Player.HEALTH -= 1;
  print(Player.HEALTH);
  damageTimer = Time.time;
  }
}

function CanAttackTarget() 
{
   //Check if the target close enough
   if(Vector3.Distance(transform.position, target.position) > range)
   {
       Disengage();
       return false;
	}
	var hit : RaycastHit;
	
	//Check if  there collision inbetween turret and target
	if(Physics.Linecast(transform.position, target.position, hit))
	{
	   if(hit.collider.gameObject.tag != "Player")
	   {
	         Disengage();
	         return false;
	   }
	   else
	   {
	         Attack();
	         return true;
	   }
	}
	return true;
}

 function Attack()
 {
      if(mode != "attack")
      {
	    InvokeRepeating("FlaconAnimate", LoockageCible, FrequenceTir);
		
		mode = "attack";
		var other : GameObject;
        
	  }
	  
 }
 
 function Disengage()
 {
      if(mode != "idle")
	  {
	       CancelInvoke();
		   mode = "idle";
		   leftFlame.renderer.enabled = false;
		   rightFlame.renderer.enabled = false;
	  }
 }




function FlaconAnimate()
{  
      if(leftFlame && rightFlame)
          {
             if(leftFlame.renderer.enabled)
		      {
			      if (sound) 
		             {
                       audio.PlayOneShot(sound);
                      }
	         leftFlame.renderer.enabled = false;
			 
		     rightFlame.renderer.enabled = true;
	         }
	        else
	        {
			    if (sound) 
		             {
                       audio.PlayOneShot(sound);
                      }
	           leftFlame.renderer.enabled = true;
			  rightFlame.renderer.enabled = false;
			  
	        }
          }  


	else
	{
	 print("Effect on Turret not set! ");
	}
 }
mais oups .....
j'ai voulu par curiosités mettre des duplicate des tourelles.....la surprise.....,les sons ne s' arrêt plus..
j'ai donc renommer les tourelles et le scripts,ce qui me donne par exemple:
turret_script1
turret_script2
et pour l'objet pareil
turret1
turret2
ainsi tous fonctionne :mrgreen:
Image

Répondre

Revenir vers « Scripting »