private static void ConfigureShellForce(GameObject gameObject) { Rigidbody rigidbody = gameObject.GetComponent <Rigidbody>(); Vector3 shellDirection = WarpSampler.Warp(WarpSampler.EWarpType.ECosineHemisphere); rigidbody.AddForce(shellDirection * 2f, ForceMode.Impulse); rigidbody.AddTorque(shellDirection); }
protected override void OnUpdate() { float time = Time.time; GameObject Agents = GameObject.FindGameObjectWithTag("Agents"); for (int i = 0; i < SpawnerComponents.Length; i++) { Spawner spawner = SpawnerComponents.Spawners[i]; if (Mathf.Abs(time - spawner.TimeAtLastSpawn) > spawner.SecondsBetweenSpawns) { for (int j = 0; j < spawner.NumObjectsSpawned; j++) { var spawnedObject = Object.Instantiate(spawner.SpawnedObject, spawner.transform); spawnedObject.transform.parent = Agents.transform; Vector3 pos = WarpSampler.Warp(WarpSampler.EWarpType.EUniformDisk); pos.z = pos.y; pos.y = 0; spawnedObject.transform.position += spawner.SpawnDistance * pos; var despawnables = Utilities.GetComponentsInHierarchy <Despawnable>(spawnedObject.transform); foreach (var despawnable in despawnables) { if (despawnable != null) { despawnable.TimeAtSpawn = time; } } } spawner.TimeAtLastSpawn = time; } } }