public BallMoveData(SSGameDataCtrl.LanQiuType type, Transform tr, SSBallAniCtrl ballAni, bool isYanWuBall) { m_LanQiuType = type; m_RealBallTr = tr; m_SSBallAni = ballAni; IsYanWuTXBall = isYanWuBall; }
public void Init(BallMoveData ballDt, float ballMoveSpeedBeiLv = 1f) { IsInitMoveBall = true; m_BallMoveData = ballDt; m_BallAni = ballDt.m_SSBallAni; m_BallMoveSpeedBeiLv = ballMoveSpeedBeiLv; if (m_Rigidbody != null) { m_Rigidbody.useGravity = false; } if (ballDt.m_RealBallTr != null) { ballDt.m_RealBallTr.localEulerAngles = new Vector3(0f, UnityEngine.Random.Range(0f, 360f), 0f); } m_BallTweenRot = m_BallAni.m_BallData.m_BallSpawnTr.gameObject.GetComponent <TweenRotation>(); SSGameDataCtrl.GetInstance().m_SSUIRoot.OnCreatExitGameUIEvent += OnCreatExitGameUIEvent; SSGameDataCtrl.GetInstance().m_SSUIRoot.OnRemoveExitGameUIEvent += OnRemoveExitGameUIEvent; }
void SpawnGameBall(int indexBallSpawn = -1) { if (m_BallPrefabArray.Length <= 0) { Debug.LogWarning("m_BallPrefabArray -> m_BallPrefab is wrong!"); return; } int randBallVal = Random.Range(0, 100) % m_BallPrefabArray.Length; if (m_BallPrefabArray[randBallVal] == null) { Debug.LogWarning("SpawnGameBall -> m_BallPrefabArray[" + randBallVal + "] is null"); return; } if (m_SpawnPointTrArray.Length <= 0) { Debug.LogWarning("SpawnGameBall -> m_SpawnPointTrArray was wrong!"); return; } int maxPointVal = SSGameDataCtrl.GetInstance().GetBallCreatRuleDt(IndexCreatBallJieDuan).MaxIndex; if (maxPointVal == 0 || maxPointVal > m_SpawnPointTrArray.Length) { maxPointVal = m_SpawnPointTrArray.Length; } int randVal = (indexBallSpawn == -1) ? Random.Range(0, 1000) % maxPointVal : indexBallSpawn; if (indexBallSpawn == -1 && m_LastIndexPoint == randVal) { //避免和上次的产生点索引相同. if (randVal > 0) { randVal--; } else { randVal++; } } if (m_SpawnPointTrArray[randVal] == null) { Debug.LogWarning("SpawnGameBall -> m_SpawnPointTrArray[" + randVal + "] is null"); return; } m_LastIndexPoint = randVal; Transform trSpawn = m_SpawnPointTrArray[randVal].transform; GameObject obj = (GameObject)Instantiate(m_BallPrefabArray[randBallVal], SSGameRootCtrl.GetInstance().BallCleanup, trSpawn); SSBallAniCtrl ballAni = obj.GetComponent <SSBallAniCtrl>(); ballAni.Init(m_PlayerIndex, IndexCreatBallJieDuan); if (IsLianFaBall) { ballAni.m_BallMove.IsLastLianFaQiu = true; if (m_LianFaBallCount >= m_LianFaBallNum - 1) { //连发球的最后一个. ballAni.m_BallMove.IsLastLianFaQiu = true; } else { ballAni.m_BallMove.IsLastLianFaQiu = false; } } }