Question by
Dragondean · Jul 02, 2017 at 07:24 AM ·
unity 5scripting problem2d-platformersoundmusic
One Song plays but the other does not?
I have 2 songs one for my death and one for just like a theme for my 2d game. I have spikes and enemies in my game if i die by spikes the music plays and if i die from the enemies he does the animation and then no sound plays. My theme and stuff works. So I mean well here is my code...
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using UnityEngine.Audio;
public class PlayerPlatformerController : MonoBehaviour {
public GameObject target;
void OnCollisionEnter2D(Collision2D spikes){
if(spikes.gameObject.name == "spike"){
anim.SetBool("Dying", true);
speed = 0;
jumpSpeed = 0;
if(music.isPlaying){
music.Stop();
deathMusic.clip = deathMoosic;
deathMusic.Play();
}
}
}
private bool jumped;
public int hp;
public float speed; //Floating point variable to store the player's movement speed.
private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.
public float jumpSpeed;
Animator anim;
public AudioSource deathMusic;
public AudioSource music;
public AudioClip level1theme;
public AudioClip deathMoosic;
// Use this for initialization
void Start()
{
//Get and store a reference to the Rigidbody2D component so that we can access it.
rb2d = GetComponent<Rigidbody2D> ();
//Get the animator.
anim = GetComponent <Animator> ();
music.clip = level1theme;
//start the music
music.Play();
}
//FixedUpdate is called at a fixed interval and is independent of frame rate. Put physics code here.
void FixedUpdate()
{
//Store the current horizontal input in the float moveHorizontal.
float moveHorizontal = Input.GetAxis ("Horizontal");
//Store the current vertical input in the float moveVertical.
float moveVertical = Input.GetAxis ("Vertical");
//Use the two store floats to create a new Vector2 variable movement.
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
//Call the AddForce function of our Rigidbody2D rb2d supplying movement multiplied by speed to move our player.
rb2d.AddForce (movement * speed);
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)){
anim.SetBool("WalkingLeft", true);
anim.SetBool("WalkingRight", false);
}else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)){
anim.SetBool("WalkingLeft", false);
anim.SetBool("WalkingRight", true);
}else{
anim.SetBool("WalkingLeft", false);
anim.SetBool("WalkingRight", false);
}
if (Input.GetKey("space")){
jumped = true;
anim.SetBool("WalkingLeft", false);
anim.SetBool("WalkingRight", false);
if (moveHorizontal < 0){
transform.Translate(new Vector3(0, jumpSpeed, 0)*Time.deltaTime);
anim.SetBool("JumpLeft", true);
anim.SetBool("JumpRight", false);
}else{
transform.Translate(new Vector3(0, jumpSpeed, 0)*Time.deltaTime);
anim.SetBool("JumpRight", true);
anim.SetBool("JumpLeft", false);
}
}else{
jumped = false;
}
if (jumped != true){
anim.SetBool("JumpLeft", false);
anim.SetBool("JumpRight", false);
}
//check the health
if (hp <= 0){
hp = 0;
}
if (hp <= 0){
anim.SetBool("Dying", true);
speed = 0;
jumpSpeed = 0;
if(music.isPlaying){
music.Stop();
deathMusic.clip = deathMoosic;
deathMusic.Play();
}
}
if (hp > 0 && ! music.isPlaying){
music.Play();
}
}
}
Comment
Also the spike death and the enemy death play the same music. And the losing health system is in the enemies script.