示例#1
0
	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;
	}
示例#2
0
    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;
     }
 }
示例#5
0
    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;
 }