protected void Callback_SpawnCar(IntCD CD, IVoidParam spawnCarParam) { SpawnCarParam _spawnCarParam = spawnCarParam as SpawnCarParam; var car = EntityManager.GetInstance().GenEntityGameObject(1, EntityFuncType.CrossRoadCar) as EntityCrossRoadCar; //var car = EntityManager.GetInstance().GetRandomEntity(ResType.Car, EntityFuncType.CrossRoadCar) as EntityCrossRoadCar; car.Init(_spawnCarParam.startPos, _spawnCarParam.endPos, _spawnCarParam.speed); //重要:Entity取出后先设置位置,再把Collider设置成true,防止在未设置位置时触发碰撞 car.position = _spawnCarParam.startPos; try { car.GetTrans().Find("Collider").gameObject.SetActive(true); } catch (System.Exception e) { #if UNITY_EDITOR throw new System.Exception(string.Format("汽车 {0} 取Collider 失败", car.mainGameObject.name)); #endif } car.LookAt(_spawnCarParam.endPos); car.Active(); CrossRoadModelManager.GetInstance().entityModel.AddToEntityMovables(car); if (CD != null) { CD.Reset(); CD.Run(); } }
public override void Run() { base.Run(); if (multiCD == null) { multiCD = new VoidParamIntCDs(); for (int i = 0; i < crossRoadList.Count; i++) { var crossRoad = crossRoadList[i]; var sParam = new SpawnCarParam() { speed = crossRoad.carSpeed, startPos = crossRoad.startPos, endPos = crossRoad.endPos, }; multiCD.AddCD(crossRoad.spawnCarCDVal, sParam, Callback_SpawnCar); //Callback_SpawnCar(null, sParam); } multiCD.Run(); } }