// 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; }
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) } } }
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); } } }
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); } }
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); } } }
/// <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); } }
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; }
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); } } }
private void LoadObjects() { shipCollisionStatus = gameObject.GetComponent <ShipCollision> (); shipFire = gameObject.GetComponent <ShipFire> (); shipMove = gameObject.GetComponent <ShipMove> (); }
// 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; }