void fuckThemWithLaser(Entity e) { float laserHeight = 10.0f; LaserSpawnerComponent component = e.laserSpawner; GameObject go = e.gameObject.gameObject; component.direction = Quaternion.Euler(0, 0, component.angle) * new Vector2(0.0f, 1.0f); RaycastHit2D hit = Physics2D.Raycast(go.transform.position, component.direction, laserHeight, component.collisionType == CollisionTypes.Player ? _enemyLayerMask : _playerLayerMask); Collider2D collider = hit.collider; if (collider != null) { CollisionScript collision = collider.GetComponentInParent<CollisionScript>(); Transform collidi = collider.transform; if (collision != null) { collision.queue.Enqueue("10_FU"); // 600dmg perSecond, wow } laserHeight = Vector2.Distance(collidi.position, go.transform.position); } if (component.laser == null) { Entity laser = _pool.CreateEntity() .AddLaser(laserHeight, component.direction, e) .AddPosition(new Vector2().Set(e.position.pos)) .AddResource(Resource.Laser); laser.isNonRemovable = true; component.laser = laser; } component.height = laserHeight; }
public void Execute() { foreach (Entity e in _group.GetEntities()) { LaserComponent component = e.laser; Entity source = component.source; if (source != null && source.hasLaserSpawner) // todo make it child or sth { Vector2 sourcePosition = source.position.pos; LaserSpawnerComponent sourceSpawner = source.laserSpawner; GameObject go = e.gameObject.gameObject; Transform transform = go.transform; transform.localScale = new Vector3(transform.localScale.x, sourceSpawner.height * pixelsPerUnit, transform.localScale.z); transform.localRotation = Quaternion.AngleAxis(sourceSpawner.angle, Vector3.forward); float xOffset = sourceSpawner.height / 2.0f * sourceSpawner.direction.x; float yOffset = sourceSpawner.height / 2.0f * sourceSpawner.direction.y; e.position.pos.Set(sourcePosition.x + xOffset, sourcePosition.y + yOffset); } else { e.isDestroyEntity = true; } } }
Collider2D findCollider(float laserHeight, LaserSpawnerComponent component, GameObject go) { RaycastHit2D hit = Physics2D.Raycast(go.transform.position, component.direction, laserHeight, component.collisionType == CollisionTypes.Player ? enemyLayerMask : playerLayerMask); return hit.collider; }
void createLaserIfNotExist(Entity e, float laserHeight, LaserSpawnerComponent component) { if (component.laser == null) { Entity laser = pool.CreateEntity() .AddLaser(laserHeight, component.direction, e) .AddPosition(new Vector2().Set(e.position.pos)) .AddResource(component.resource); laser.isNonRemovable = true; component.laser = laser; } }
public void Execute() { float deltaTime = _time.GetSingleEntity().time.deltaTime; Entity cameraEntity = _camera.GetSingleEntity(); float cameraVelocityY = cameraEntity.hasVelocity ? cameraEntity.velocity.vel.y : 0.0f; foreach (Entity e in _group.GetEntities()) { FirstBossComponent component = e.firstBoss; component.age += deltaTime; //float age = component.age; setVelocity(e.velocity, e.position, _player.GetSingleEntity().position); if (!tests) { if (!e.hasLaserSpawner) { //e.AddLaserSpawner(5.0f, 0.0f, 0.0f, new UnityEngine.Vector2(), CollisionTypes.Enemy, null); } else { LaserSpawnerComponent laser = e.laserSpawner; laser.angle += component.laserAngle * deltaTime; if (laser.angle < EPSILON) { e.RemoveLaserSpawner(); } } if (!initalize) { //e.AddCircleMissileRotatedSpawner(40, 8, 0, 10, 0.0f, 0.1f, Resource.MissileEnemy, 3.0f, CollisionTypes.Enemy); e.AddCircleMissileSpawner(20, 2.0f, 0.05f, Resource.MissileEnemy, 4.0f, CollisionTypes.Enemy); //e.AddMultipleMissileSpawner(5, 5, 0.1f, 0.1f, 5.0f, 5.0f, Resource.MissileEnemy, 0.1f, velocity.x, -velocity.y, CollisionTypes.Enemy); initalize = true; } } } }
private void updateLaserHeight(float deltaTime, LaserSpawnerComponent laserSpawner) { laserSpawner.height += deltaTime; laserSpawner.maxHeight += deltaTime; }