Beispiel #1
0
    public void SetData(DanmuShoot data, GroupTrack itemGroupTrack)
    {
        TimelineClip danmuShootClip = CreateClip <DanmuShootClip>();

        danmuShootClip.start    = data.startTime;
        danmuShootClip.duration = data.shootTime;
    }
    /*IEnumerator spawnStart()    //生成弹幕的方法
     * {
     *  for (int i = 0; i < danmuNum; i++)
     *  {
     *      //生成弹幕
     *      xyDis.x = xDis * speed;
     *      xyDis.y = yDis * speed;
     *      clone = Instantiate(danmu, spawn.transform.position, spawn.transform.rotation);
     *      clone.transform.parent = spawn.transform;
     *      clone.GetComponent<Rigidbody>().AddForce(xyDis);
     *      xDis = xDis + xOffset;
     *      //弹幕发射时间间隔
     *      yield return new WaitForSeconds(danmuTime);
     *  }*/

    /// <summary>
    /// 创建一种弹幕
    /// </summary>
    /// <param name="_danmuShoot"></param>
    /// <returns></returns>
    IEnumerator danmuInit(DanmuShoot _danmuShoot)
    {
        //发射检测时间
        while (timed < _danmuShoot.startTime)
        {
            yield return(null);
        }

        //整个弹幕发射器的生命周期
        for (float live = 0; live < _danmuShoot.shootTime; live += _danmuShoot.danmuFrequency)
        {
            ShootSystem(_danmuShoot);
            //ShootSystem(_danmuShoot);
            yield return(new WaitForSeconds(_danmuShoot.danmuFrequency));
        }
    }
    /// <summary>
    /// 弹幕预制体系统(构成一轮弹幕)
    /// </summary>
    /// <param name="_danmuShoot"></param>
    /// <param name="danmuNumber">如果不是随机,就会用到该数值作为顺序发射</param>
    public void ShootSystem(DanmuShoot _danmuShoot)
    {
        for (int i = 0; i < _danmuShoot.launchNumber.number; i++)
        {
            GameObject        danmuObject;
            List <GameObject> danmuObjects = _danmuShoot.danmuPreform.danmuObjects;
            //是否随机构成
            if (_danmuShoot.danmuPreform.isRandom)
            {
                int n = Random.Range(0, danmuObjects.Count);
                danmuObject = Instantiate(danmuObjects[n], transform);
            }
            else
            {
                danmuObject = Instantiate(danmuObjects[i % danmuObjects.Count], transform);
            }

            if (_danmuShoot.launchNumber.timedelta)
            {
                danmuObject.GetComponent <Boom>()
                .init(Vector2Rote(_danmuShoot.danmuGo, _danmuShoot.launchNumber.deviation * (i + 1) * timed))
                .setLiveTime(_danmuShoot.liveTime)
                .setDeltaSpeed(_danmuShoot.deltaSpeeds)
                .setAimshoot(_danmuShoot.aimshoot)
                .addDanmuShoot(_danmuShoot.EXDanmu)
                .GetComponent <Transform>().localPosition = getOffset(_danmuShoot.randmOffset.startPosition);
            }
            else
            {
                danmuObject.GetComponent <Boom>()
                .init(Vector2Rote(_danmuShoot.danmuGo, _danmuShoot.launchNumber.deviation * (i + 1)))
                .setLiveTime(_danmuShoot.liveTime)
                .setDeltaSpeed(_danmuShoot.deltaSpeeds)
                .setAimshoot(_danmuShoot.aimshoot)
                .addDanmuShoot(_danmuShoot.EXDanmu)
                .GetComponent <Transform>().localPosition = getOffset(_danmuShoot.randmOffset.startPosition);
            }
        }
    }