// Start is called before the first frame update
    void Start()
    {
        SC          = GameObject.FindGameObjectWithTag("Ship").GetComponent <ShipCollision>();
        RB          = GetComponent <Rigidbody2D>();
        Anim        = GetComponent <Animator>();
        FacingRight = true;

        Rotation = ShootPoint.localRotation;
    }
Esempio n. 2
0
 void Start()
 {
     flagAuxBugFixGambiarra = true;
     TextEnable.Init();
     player = GameObject.FindGameObjectWithTag("Player");
     shipCollisionStatus = player.GetComponent <ShipCollision>();
     if (DataCenter.instance.numberOfLevelDeaths == 0)
     {
         DataCenter.instance.velMinInicial = DDAAply.instance.asteroidSpeed; //grava a velocidade inicial do nivel
         DataCenter.instance.SetTempoInicial();                              //grava o tempo inicial do nível
         if (DDAAply.instance.IsAfetivo)
         {
             EDAStart.instance.LerEDACalculaExcitacao(false); //Descarta os sinais eda lidos no questionario (calcularExcitacao=false)
         }
     }
 }
Esempio n. 3
0
        public Game()
        {
            this.satellite     = new Satellite();
            this.playerManager = new PlayerManager();
            this.bulletManager = new BulletManager();
            this.shipManager   = new ShipManager();

            this.bulletCollision = new BulletCollision();
            this.shipCollision   = new ShipCollision();

            this.satellite.StartTransmittingData(playerManager, shipManager,
                                                 bulletManager, bulletCollision, shipCollision);

            this.shipManager.GenerateShips();
            this.playerManager.CreatePlayer(shipManager.BuildShip(ShipType.PlayerShip));
        }
 private void Update()
 {
     if (_ecsEnabled && _manager != null)
     {
         translation.Value = transform.position;
         rotation.Value    = transform.rotation;
         _manager.SetComponentData(_entity, translation);
         _manager.SetComponentData(_entity, rotation);
         collision = _manager.GetComponentData <ShipCollision>(_entity);
         if (collision.collisionMask != 0)
         {
             // Inform Event
             onCollision.Invoke(collision.collisionMask, collidesWith.value);
             collision.collisionMask = 0;
             _manager.SetComponentData(_entity, collision);
         }
     }
 }
Esempio n. 5
0
    public override void Execute(ShipEntity entity)
    {
        entity.RunPartsAI();
        if (entity.GetPartState() != PartState.Attack)
        {
            if (ShipCollision.CanSeek(entity))
            {
                entity.Move();
            }
        }
        else
        {
            entity.FsmInstance.ChangeState(LockAttackState.Instance);
        }

        if (entity.Ship.Position.z >= BattlefieldEnvironment.Instance.BattlefieldZBoundary)
        {
            // 通过消息通知脱离战场
            MessageDispatcher.Instance.DispatchMessage(TelegramType.BreakAway, entity.ID, entity.ID, 1);
        }
    }
Esempio n. 6
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (_isStop)
        {
            return;
        }
        Bullet bullet = other.GetComponent <Bullet>();

        if (bullet != null)
        {
            Hit?.Invoke(this);
        }
        else
        {
            Ship ship = other.GetComponent <Ship>();
            if (ship != null)
            {
                ShipCollision?.Invoke(this);
            }
        }
    }
Esempio n. 7
0
        /// <summary>
        /// Apply Collision from Entity A to B
        /// </summary>
        /// <param name="entityA">Starting Entity</param>
        /// <param name="entityB">Receiving Entity</param>
        public void ApplyCollision(Entity entityA, Entity entityB)
        {
            ShipCollisionMask collisionStartMaskComponent = CollisionMaskGroup[entityA]; // Bullet

            ShipCollisionMask collisionEndMaskComponent = CollisionMaskGroup[entityB];   // Ship

            // Test if we care about this collision for Ship
            if ((collisionStartMaskComponent.belongsTo & collisionEndMaskComponent.collidesWith) != 0)
            {
                // Ship Collision
                ShipCollision collisionEndComponent = CollisionGroup[entityB]; // Ship
                collisionEndComponent.collisionMask |= collisionStartMaskComponent.belongsTo;
                CollisionGroup[entityB]              = collisionEndComponent;
            }

            // Test if we care about this collision for Bullet (Destroy it)
            if ((collisionEndMaskComponent.belongsTo & collisionStartMaskComponent.collidesWith) != 0)
            {
                // Bullet Collision
                // TODO see if it is better to just add component
                CommandBuffer.DestroyEntity(entityA);
            }
        }
Esempio n. 8
0
    public void Move()
    {
        // 暴力尝试中
        ShipEntity shipEntity = ShipCollision.GetObstructTarget(this);
        int        myVol      = this.Ship.Reference.vol;
        int        targetVol  = 0;
        float      zDistance  = float.MaxValue;

        if (shipEntity != null)
        {
            targetVol = shipEntity.Ship.Reference.vol;
            zDistance = Mathf.Abs(this.Ship.Position.z - shipEntity.Ship.Position.z);
        }
        float standSpeed         = Utility.GetValueByRate(FightServiceDef.SPEED_SCALAR, this.Ship.Reference.speed_max);
        float accBaseSpeed       = zDistance - targetVol - 2.5f * myVol;
        float instantaneousSpeed = this.Ship.Reference.speed_max / 10000.0f + accBaseSpeed * this.Ship.Reference.acc_speed / 100000.0f;

        instantaneousSpeed = FightServiceDef.SPEED_SCALAR * instantaneousSpeed;

        if (instantaneousSpeed > standSpeed)
        {
            instantaneousSpeed = standSpeed;
        }

        if (instantaneousSpeed < 0)
        {
            return;
        }

        Ship.Position.z += instantaneousSpeed;

        proto.UnitPos curPos = new proto.UnitPos();
        curPos.posx           = (int)(Ship.Position.x * 10000);
        curPos.posz           = (int)(Ship.Position.z * 10000);
        curPos.movetype       = Def.MoveType.Forward;
        BehaviorMsg_.position = curPos;
    }
Esempio n. 9
0
    public override void Execute(ShipEntity entity)
    {
        entity.RunPartsAI();
        if (entity.Ship.Reference.sw_targetdecision_range > 0)
        {
            // 侧移判定
            if (entity.GetPartState() == PartState.Attack)
            {
                return;
            }

            ShipEntity targetEntity = TargetSelector.GetLateralTarget(entity);
            if (targetEntity == null)
            {
                return;
            }
            bool lateralRight = targetEntity.Ship.Position.x > entity.Ship.Position.x;

            if (ShipCollision.CanLateral(entity, targetEntity, lateralRight))
            {
                entity.LateralMove(lateralRight);
            }
        }
    }
Esempio n. 10
0
 private void LoadObjects()
 {
     shipCollisionStatus = gameObject.GetComponent <ShipCollision> ();
     shipFire            = gameObject.GetComponent <ShipFire> ();
     shipMove            = gameObject.GetComponent <ShipMove> ();
 }
Esempio n. 11
0
 // Use this for initialization
 void Start()
 {
     phys      = GetComponent <PhysicsVariables>();
     collision = GetComponent <ShipCollision>();
 }
 // Start is called before the first frame update
 void Start()
 {
     SC = GameObject.FindGameObjectWithTag("Ship").GetComponent <ShipCollision>();
 }
        public void StartTransmittingData(IPlayerManager playerManager, IShipManager shipManager
                                          , IBulletManager bulletManager, BulletCollision bulletCollision, ShipCollision shipCollision)
        {
            playerManager.SendPlayerPosition          += shipManager.ReceivePlayerPosition;
            shipManager.SendShipsPositions            += bulletManager.ReceiveShipsPositions;
            shipManager.SendNewWeapons                += bulletManager.SubscribeForNewWeapons;
            bulletCollision.bulletCollision           += bulletManager.OnBulletCollision;
            bulletCollision.bulletCollidesWithAShip   += shipManager.OnBulletCollision;
            bulletCollision.bulletCollidesWithAShip   += playerManager.OnBulletCollision;
            shipCollision.shipCollidesWithAnotherShip += shipManager.OnShipCollision;

            shipManager.SendMessageWhenShipDestroyed += playerManager.UpdateScore;

            shipManager.ShipCollidesWithPlayer += playerManager.UpdateHealth;
        }