/// <summary>
    ///  创建子弹
    /// </summary>
    /// <param name="launchPositon"></param>
    /// <param name="force"></param>
    private void CreateBullet(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float force)
    {
        Sprite spBullet = null;
        RuntimeAnimatorController animatorController = null;
        int  damage     = 10;
        bool hasDesAnim = false;

        switch (bulletType)
        {
        case MiniGameBarrageBulletTypeEnum.Stone:
            damage             = 10;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spStone;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForStone;
            hasDesAnim         = true;
            break;

        case MiniGameBarrageBulletTypeEnum.Arrow:
            damage             = 10;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spArrow;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForArrow;
            break;

        case MiniGameBarrageBulletTypeEnum.Darts:
            damage             = 20;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spDarts;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForDarts;
            break;

        case MiniGameBarrageBulletTypeEnum.Fireball:
            damage             = 30;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spFireball;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForFireball;
            break;

        case MiniGameBarrageBulletTypeEnum.Egg:
            damage             = 40;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spEgg;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForEgg;
            hasDesAnim         = true;
            break;
        }
        //设置发射器朝向角度
        mAngelsTarget = VectorUtil.GetAngle(objEjector.transform.position, targetPositon);
        //创建子弹
        GameObject objBullet = Instantiate(objBulletModel, objBulletContainer.transform);

        objBullet.SetActive(true);
        objBullet.transform.position = objEjector.transform.position;
        MiniGameBarrageBulletCpt bulletCpt = objBullet.GetComponent <MiniGameBarrageBulletCpt>();

        bulletCpt.SetBulletData(bulletType, spBullet, animatorController, damage, hasDesAnim);
        //发射子弹
        bulletCpt.LaunchBullet(targetPositon, force);
    }
示例#2
0
    //private void OnTriggerStay2D(Collider2D collision)
    //{
    //    BarrageBulletCpt barrageBullet = collision.GetComponent<BarrageBulletCpt>();
    //    if (barrageBullet)
    //    {
    //        listSightBullet.Add(barrageBullet);
    //        if (callBack != null)
    //            callBack.SeeBullet(barrageBullet);
    //    }
    //}


    public IEnumerator GetBullet()
    {
        while (true)
        {
            yield return new WaitForSeconds(0.1f);
            Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 2f);
            List<MiniGameBarrageBulletCpt> barrageBulletList = new List<MiniGameBarrageBulletCpt>();
            foreach (Collider2D itemCollider in colliders)
            {
                MiniGameBarrageBulletCpt itemBullet = itemCollider.GetComponent<MiniGameBarrageBulletCpt>();
                if (itemBullet)
                {
                    barrageBulletList.Add(itemBullet);
                }
            }
            if (callBack != null && barrageBulletList.Count > 0)
                callBack.SeeBullet(barrageBulletList);
        }
    }
示例#3
0
    public void SeeBullet(List <MiniGameBarrageBulletCpt> barrageBulletList)
    {
        float       distanceTemp = 0;
        Rigidbody2D rbNear       = null;

        for (int i = 0; i < barrageBulletList.Count; i++)
        {
            MiniGameBarrageBulletCpt itemBullet = barrageBulletList[i];
            Rigidbody2D rbBullet = itemBullet.GetComponent <Rigidbody2D>();
            //获取最近的子弹
            float distanceItem = Vector2.Distance(rbBullet.position, transform.position);
            if (distanceItem > distanceTemp)
            {
                distanceTemp = distanceItem;
                rbNear       = rbBullet;
            }
        }
        Vector3 moveVelocity = new Vector3(-rbNear.velocity.y, rbNear.velocity.x);

        characterMoveCpt.SetDestination(transform.position + moveVelocity.normalized);
    }