见缝插针07练习——针的插入

针的插入

public class Pin : MonoBehaviour
{
    public float speed = 5;//移动速度
    private bool isFly = false;//表示是否发射针到小球中
    private bool isReach = false;//表示针是否到达指定的发射位置
    private Transform StartPoint;//小球的就位位置
    public Transform circle;//获取小球
    void Start ()
    {
        StartPoint = GameObject.Find("StartPoint").transform;
        //circle = GameObject.Find("Circle").transform;
        circle = GameObject.FindGameObjectWithTag("Circle").transform;//通过标签查找小球,跟上面的等价
    }
    void Update ()
    {
        if (isFly == false)
        {
            if (isReach == false)
            {
                transform.position = Vector3.MoveTowards(transform.position, StartPoint.position, speed * Time.deltaTime);//控制针移动到startPoint
                if (Vector3.Distance(transform.position, StartPoint.position) < 0.05f)//判断是否到达
                {
                    isReach = true;
                }
            }
        }
        else
        {
            transform.position = Vector3.MoveTowards(transform.position, circle.position, speed * Time.deltaTime);//控制针移动到startPoint
        }
    }
    public void StartFly()//控制针的飞行
    {
        isFly = true;
        isReach = true;
    }
}

在GameManager脚本中控制针的插入,插入小球的位置有误,脚本后期完善

public class GameManager : MonoBehaviour
{
    private Transform StartPoint;//针的发射点
    private Transform SpawnPoint;//针的生成点
    public GameObject pinPrefab;//针的预设物,需要拖拽
    private Pin currentPin;//获取当前针,以方便调用方法
    void Start ()
    {
        StartPoint = GameObject.Find("StartPoint").transform;
        SpawnPoint = GameObject.Find("SpawnPoint").transform;
        SpawnPin();
    }
    private void Update()
    {
        if (Input.GetMouseButton(0))
        {
            currentPin.StartFly();//调用飞行的方法
        }
    }
    void SpawnPin()
    {
        currentPin= GameObject.Instantiate(pinPrefab,SpawnPoint.position,pinPrefab.transform.rotation).GetComponent<Pin>();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42983775/article/details/88066953
今日推荐