using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Target : MonoBehaviour
{
    public float speed;
    void Update()
    {
        transform.Rotate(new Vector3(0, 0, speed * Time.deltaTime));
    }
}
      
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Needle : MonoBehaviour
{
    Rigidbody2D rb;
    private void Start()
    {
        rb= GetComponent<Rigidbody2D>();
    }
    //死亡碰撞
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "needle")
        {
            print("collider");
            //预留业务逻辑
        }
    }
    
    //有效碰撞
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "target")
        {
            print("hit");
            //预留业务逻辑
        }
    }
}
      
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooter : MonoBehaviour
{
    public GameObject needlePrefab;
    public AudioSource player;
    public AudioClip shootClip;
    public float up;
    
    void Update()
    {
        //预留时间缩放度的判断
        if (Input.GetMouseButtonDown(0))
        {
            GameObject needle = Instantiate(needlePrefab, transform.position, Quaternion.identity);
            needle.GetComponent<Rigidbody2D>().velocity = Vector2.up * up;
            player.PlayOneShot(shootClip);
        }
    }
}
      
private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "target")
    {
        print("hit");
        rb.velocity = Vector2.zero;
        transform.parent = collision.transform;
        //预留加分逻辑
    }
}
      
//ScentCtrl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ScentCtrl : MonoBehaviour
{
    public void loadSecen(string str)
    {
        SceneManager.LoadScene(str);
    }
    public void quitApp()
    {
        Application.Quit();
    }
}
      
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
    public static GameManager instance;
    public GameObject ending;
    public Text scoreTxt;
    int score;
    private void Awake()
    {
        instance = this;
    }
    void Start()
    {
        Time.timeScale = 1;
        ending.SetActive(false);
        score = 0;
    }
    public void showScore()
    {
        score++;
        scoreTxt.text = score.ToString();
    }
    public void showEnding()
    {
        ending.SetActive(true);
        Time.timeScale = 0;
    }
}
      
private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "target")
    {
        print("hit");
        rb.velocity = Vector2.zero;
        transform.parent = collision.transform;
        GameManager.instance.showScore();
    }
}
      
private void OnCollisionEnter2D(Collision2D collision)
{
    print(collision.gameObject.tag);
    if (collision.gameObject.tag == "needle")
    {
        GameManager.instance.showEnding();
    }        
}
      
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooter : MonoBehaviour
{
    public GameObject needlePrefab;
    public AudioSource player;
    public AudioClip shootClip;
    public float up;
    void Update()
    {
        if (Input.GetMouseButtonDown(0) && Time.timeScale != 0)
        {
            GameObject needle = Instantiate(needlePrefab, transform.position, Quaternion.identity);
            player.PlayOneShot(shootClip);
            needle.GetComponent<Rigidbody2D>().velocity = Vector2.up * up;
        }
    }
}
      
//BGM.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BGM : MonoBehaviour
{
    public static BGM instance;
    //AudioSource必须是public
    public AudioSource player;
    public AudioClip bgm;
    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }
        DontDestroyOnLoad(gameObject);
    }
    void Start()
    {
        player.clip = bgm;
        player.Play();
    }
}
      
//VolCtrl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class VolCtrl : MonoBehaviour
{
    public Image volumeImg;
    public Sprite normalSprite;
    public Sprite muteSprite;
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.M))
        {
            BGM.instance.player.mute = !BGM.instance.player.mute;
            if (BGM.instance.player.mute)
                volumeImg.sprite = muteSprite;
            else
                volumeImg.sprite = normalSprite;
        }
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            BGM.instance.player.volume += 0.1f;
            if (BGM.instance.player.volume > 0)
            {
                BGM.instance.player.mute = false;
                volumeImg.sprite = normalSprite;
            }
        }
        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            BGM.instance.player.volume -= 0.1f;
            if (BGM.instance.player.volume <= 0)
            {
                BGM.instance.player.mute = true;
                volumeImg.sprite = muteSprite;
            }
        }
    }
}