void LoadLevel(int level) { levelGameobject = Instantiate(levels[level - 1].prefab, levelMarker.transform); levelGameobject.transform.position = new Vector3(levelGameobject.transform.position.x - 1.5f, levelGameobject.transform.position.y, levelGameobject.transform.position.z - 1.5f); laserEmitter = levelGameobject.GetComponentInChildren <LaserEmitter>(); laserEmitter.maxReflectionCount = levels[level - 1].maximumReflections; }
/// <summary> /// Emits a copy of the given Laser beam at the given offset and angle, /// relative to this Portal. /// </summary> /// <param name="laser">The Laser beam to copy.</param> /// <param name="offset">The offset of the Laser beam.</param> /// <param name="angle">The angle from the normal of this Portal's plane.</param> public void EmitLaserBeam(LaserBeam laser, Vector3 offset, Vector3 angle) { LaserEmitter emitter = this.PortalEmitter.GetEmitter(laser); emitter.transform.position = offset; emitter.transform.rotation = Quaternion.FromToRotation(Vector3.forward, angle); emitter.transform.localScale = new Vector3(-0.385f, -0.385f, -0.385f); }
private void ChangeLaserIntensity(int index, float newIntensity) { if (elementPositions.ContainsKey(laserName) && index < elementPositions[laserName].Count) { Vector2Int pos = elementPositions[laserName][index]; LaserEmitter laser = (LaserEmitter)board[pos.x, pos.y].GetPlacedObject(); if (laser != null) { laser.ChangeIntensity(newIntensity); currentSteps++; } } }
public override void Init(string additionalData) { base.Init(additionalData); _turnmodule = ModuleManager.getInstance.GetModule <BattleTurnsModule>(); _turnmodule.Notifications += OnNextTurn; var emitterObj = Node.transform.Find("laser_cube/emitter"); _laserEmitter = emitterObj.GetComponent <LaserEmitter>(); if (_laserEmitter == null) { _laserEmitter = emitterObj.gameObject.AddComponent <LaserEmitter>(); } _laserEmitter.AddBlockTileType(typeof(BlockTile)); _laserEmitter.AddBlockTileType(typeof(LockTile)); _laserEmitter.AddBlockTileType(typeof(GemTile)); _laserEmitter.AddBlockTileType(typeof(BombTile)); _laserEmitter.AddBlockTileType(typeof(LaserTile)); _laserEmitter.AddBlockTileType(typeof(DiskTile)); _laserEmitter.AddBlockTileType(typeof(UpDirectTile)); _laserEmitter.AddBlockTileType(typeof(DownDirectTile)); _laserEmitter.AddBlockTileType(typeof(LeftDirectTile)); _laserEmitter.AddBlockTileType(typeof(RightDirectTile)); switch (additionalData) { case "up": { _dir = new Vector2Int(0, -1); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 0); } break; case "down": { _dir = new Vector2Int(0, 1); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 180); } break; case "left": { _dir = new Vector2Int(-1, 0); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, 90); } break; case "right": { _dir = new Vector2Int(1, 0); _laserEmitter.transform.localEulerAngles = new Vector3(0, 0, -90); } break; } }
// Start is called before the first frame update void Start() { _le = GetComponent <LaserEmitter>(); }
/// <summary> /// Initializes a new instance of the <see cref="LaserBeam"/> class. /// </summary> /// <param name="origin">The origin of this Laser beam.</param> /// <param name="direction">The direction vector of this Laser beam.</param> /// <param name="emitter">The LaserEmitter that caused this Laser beam.</param> public LaserBeam(Vector3 origin, Vector3 direction, LaserEmitter emitter) { this.Origin = origin; this.Direction = direction; this.emitter = emitter; }