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); } } }