Je suis débutant en codage. Je travail sur un jeu 2d de type shooter et j'aimerais savoir comment jouer un sons sur la fréquence du tire de l'arme (FireRate). J'ai déja essayer de utiliser la commande AudioSource.play (enfin un truc comme ça) mais sans succes. Le sons est déja sur le GameObject.
voici le script:
Code : Tout sélectionner
using System.Collections;
using UnityEngine;
public class Weapon : MonoBehaviour {
public float FireRate = 0;
public float Damage = 10;
public LayerMask whatToHit;
public Transform BulletTrailPrefab;
public Transform MuzzleFlashPrefab;
float timeToSpawnEffet = 0;
public float effectSpawnRate = 10;
float timeToFire = 0;
Transform firePoint;
// Use this for initialization
void Awake () {
firePoint = transform.Find ("FirePoint");
if (firePoint == null) {
Debug.LogError ("Pas de firepoint? WHAT?!");
}
}
// Update is called once per frame
void Update () {
if (FireRate == 0) {
if (Input.GetKeyDown (KeyCode.Mouse0)) {
Shoot ();
}
}
else {
if (Input.GetKey (KeyCode.Mouse0) && Time.time > timeToFire) {
timeToFire = Time.time + 1/FireRate;
Shoot();
}
}
}
void Shoot () {
Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y) ;
Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition - firePointPosition, 100, whatToHit);
if (Time.time >= timeToSpawnEffet) {
Effect ();
timeToSpawnEffet = Time.time + 1 / effectSpawnRate;
}
Debug.DrawLine (firePointPosition, (mousePosition-firePointPosition)*100, Color.black);
if (hit.collider != null) {
Debug.DrawLine (firePointPosition, hit.point, Color.red);
Debug.Log ("Tu a touché " + hit.collider.name + " et inffligé " + Damage + " dégats!");
}
}
void Effect () {
Instantiate (BulletTrailPrefab, firePoint.position, firePoint.rotation);
Transform clone = Instantiate (MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;
clone.parent = firePoint;
float size = Random.Range (3f, 3.9f);
clone.localScale = new Vector3 (size, size, size);
Destroy (clone.gameObject, 0.02f);
}
}