public bool Spawn(float spawn_move, bool is_right) { float privilege = Mathf.Abs(m_LeftOrRightPrivilege); privilege *= is_right == (m_LeftOrRightPrivilege > 0.0) ? 1.0f : -1.0f; const float max_privilege = 10.0f; privilege *= max_privilege; // Debug.Log(m_LeftOrRightPrivilege + " " + privilege + " " + m_DeltaSpawnMove); // Should we do this? float min_delta_spawn_move = 4.0f; float max_delta_spawn_move = 15.0f; float res_delta_spawn_move = m_DeltaSpawnMove - privilege; res_delta_spawn_move = Mathf.Clamp(res_delta_spawn_move, min_delta_spawn_move, max_delta_spawn_move); if (spawn_move > res_delta_spawn_move * m_SpeedDeltaSpawnMoveCoef) { Vector3 pos = new Vector3(3.0f * (is_right ? 1.0f : -1.0f), 30.0f, 0.0f); GameObject go = MonoBehaviour.Instantiate(m_GameContr.m_FallingObject, pos, Quaternion.identity) as GameObject; FallingObject falling_obj = (FallingObject)go.GetComponent(typeof(FallingObject)); m_GameContr.GetConveyor(is_right).AddObject(falling_obj); falling_obj.SetRotationSpeed((Random.value - 0.5f) * 10.0f); falling_obj.transform.rotation = Quaternion.Euler(0.0f, 0.0f, Random.value * 360.0f); // select object SpawnObjectType obj_type = GetObjectType(is_right); falling_obj.SetType(obj_type); SpawnObjectsInfo obj_info = m_SpawnObjects[obj_type]; go.rigidbody2D.mass = obj_info.m_Mass; SpriteRenderer sprite_rend = falling_obj.GetComponentInChildren(typeof(SpriteRenderer)) as SpriteRenderer; Sprite sprite = Resources.Load <Sprite>(obj_info.m_SpriteName); if (!sprite) { Debug.LogWarning("Can't load Cake"); } sprite_rend.sprite = sprite; float scale = 1.0f; go.transform.localScale = new Vector3(scale, scale, 1.0f); return(true); } else { return(false); } }
public void Init() { m_SpawnObjects.Clear(); for (int i = 0; i < (int)SpawnObjectType.Last; i++) { m_SpawnObjects[(SpawnObjectType)i] = new SpawnObjectsInfo((SpawnObjectType)i); } m_DeltaSpawnMove = LevelsSettings.GetDeltaSpawnMove(); m_LeftOrRightPrivilege = 0.0f; m_PrivilegeChangingTrand = true; }