private void Succ(DudeMoveState dude) { if (dude.CubeStorage > dude.MaximumStorage || dude.SuccCooldown * dude.SuccSpeed < 1) { return; } dude.SuccCooldown = 0; RaycastHit hit; if (Physics.SphereCast(dude.transform.position + Vector3.up, 1.5f, (dude.Cursor.position - dude.transform.position).normalized, out hit, (dude.Cursor.position - dude.transform.position).magnitude, ~((1 << 10) & (1 << 11)))) { var selection = Selections.SphereSelection(World.Instance, hit.point.ToVector3Int(), dude.SuccArea); var tiles = selection.SolidTiles.ToList(); var cubes = tiles.Count; for (int i = 0; i < cubes; i++) { _pool.SpawnFromPool("SuccCube", tiles[i].Position + Vector3.one / 2, Quaternion.identity); } dude.CubeStorage += cubes; selection.DeleteAll(); } }
private void OnCollisionEnter(Collision other) { _pool.SpawnFromPool("LaserExplosion", transform.position, Quaternion.identity); var selection = Selections.SphereSelection(World.Instance, transform.position.ToVector3Int(), DestructionArea); selection.DeleteAll(); HitEffect.ExecuteIfPresent(transform.position); gameObject.SetActive(false); }