IEnumerator WormMoveMode3_Operate(WormMoveMode wormMoveMode) { // 实例化,每个怪物物体根据其自身运动模式,从某一位置运动到另一位置 for (int i = 0; i < wormMoveMode.moveFrom.Length; ++i) { GameObject wormObj = Instantiate(wormMoveMode.wormEnemy, wormMoveMode.moveFrom[i].position, Quaternion.identity); wormObj.transform.SetParent(wormMoveMode.transformParent); wormMoveMode.wormObjList.Add(wormObj); // 为每个实例化的怪物的运动终点属性赋值 SetTweenPosition(wormObj, wormMoveMode.moveTo[i].position, (Mathf.Abs(wormMoveMode.moveTo[i].position.x - wormMoveMode.moveFrom[i].position.x)) / wormMoveMode.speed); yield return(new WaitForSeconds(wormMoveMode.wormDelay)); } yield return(new WaitForSeconds(wormMoveMode.stayDuration)); // 运动到指定位置后,停留一段时间 // 集体向某一方向(水平或垂直)继续运动 foreach (GameObject wormObj in wormMoveMode.wormObjList) { wormObj.AddComponent <Bolt_Ordinary>(); wormObj.GetComponent <Bolt_Ordinary>().speed = wormMoveMode.speed; wormObj.GetComponent <Bolt_Ordinary>().direction_X = wormMoveMode.x_Direction; wormObj.GetComponent <Bolt_Ordinary>().direction_Y = wormMoveMode.y_Direction; } wormMoveMode.wormObjList.Clear(); }
IEnumerator WormMoveMode1_Operate(WormMoveMode wormMoveMode) { for (int i = 0; i < wormMoveMode.moveFrom.Length; ++i) { for (int j = 0; j < wormMoveMode.wormCount; ++j) { GameObject wormObj = Instantiate(wormMoveMode.wormEnemy, wormMoveMode.moveFrom[i].position, Quaternion.identity); wormObj.transform.SetParent(wormMoveMode.transformParent); SetTweenPosition(wormObj, wormMoveMode.moveTo[i].position, (Mathf.Abs(wormMoveMode.moveTo[i].position.x - wormMoveMode.moveFrom[i].position.x)) / wormMoveMode.speed); yield return(new WaitForSeconds(wormMoveMode.wormDelay)); } yield return(new WaitForSeconds(wormMoveMode.waveDelay)); } }
IEnumerator WormMoveMode2_Operate(WormMoveMode wormMoveMode) { // 生成并移动至指定位置 for (int i = 0; i < wormMoveMode.moveFrom.Length; ++i) { GameObject wormObj = Instantiate(wormMoveMode.wormEnemy, wormMoveMode.moveFrom[i].position, Quaternion.identity); wormObj.transform.SetParent(wormMoveMode.transformParent); wormMoveMode.wormObjList.Add(wormObj); SetTweenPosition(wormObj, wormMoveMode.moveTo[i].position, (Mathf.Abs(wormMoveMode.moveTo[i].position.y - wormMoveMode.moveFrom[i].position.y)) / wormMoveMode.speed); yield return(new WaitForSeconds(wormMoveMode.wormDelay)); } yield return(new WaitForSeconds(wormMoveMode.stayDuration)); // 停留 // 继续运动 foreach (GameObject wormObj in wormMoveMode.wormObjList) { wormObj.AddComponent <Bolt_Ordinary>(); wormObj.GetComponent <Bolt_Ordinary>().speed = wormMoveMode.speed; wormObj.GetComponent <Bolt_Ordinary>().direction_Y = wormMoveMode.y_Direction; } wormMoveMode.wormObjList.Clear(); }