public Entity() { gameobjectComponent = new GameobjectComponent() { entity = this }; identity = new Identity() { entity = this }; //// pawn //inputComponent = new InputComponent() { entity = this }; //moveComponent = new MoveComponent() { entity = this }; //aiComponent = new AiComponent() { entity = this }; //// tank bodywork or gun //tankComponent = new TankComponent() { entity = this }; //gunComponent = new GunComponent() { entity = this }; //buffComponent = new BuffComponent() { entity = this }; //// bullet //bulletComponent = new BulletComponent() { entity = this }; }
public void InitBodywork(int bodyworkID, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent) { gameobjectComponent.animator.SetInteger("state", 0); // enter the idle animation //gameobjectComponent.animator.SetInteger("init", 2); //EquipBodywork(EquipmentManager.GetInstance().GetBodywork(bodyworkID), tank, move, gameobjectComponent); }
public void Update(GunComponent gunComponent, InputComponent input, GameobjectComponent gameobjectComponent) { if (gunComponent == null || gunComponent.enable == false) { return; } if (gunComponent.entity.identity.isAIControl == false) { SetDirection(gunComponent, input, gameobjectComponent.transform); } gunComponent.laserTimer.Update(); if (gunComponent.laserTimer.isRunning == false) { if (InputSystem.GetHoldAction(input, "laser")) { gunComponent.laserTimer.Enter(); EmitLaser(gunComponent, gameobjectComponent.transform); return; } } gunComponent.fireTimer.Update(); if (gunComponent.fireTimer.isRunning == false) { if (InputSystem.GetHoldAction(input, "fire")) { gunComponent.fireTimer.Enter(); Fire(gunComponent, gameobjectComponent.transform); } } }
public void Update(MoveComponent move, GameobjectComponent gameobjectComponent) { if (move == null || move.enable == false) { return; } Transform transform = gameobjectComponent.transform; BoxCollider2D collider = gameobjectComponent.collider; if (move.needMove == true) { Vector3 nextPosition = transform.position + transform.up * move.moveSpeed * Time.fixedDeltaTime; if (move.collisionDetection == true) { collider.enabled = false; Collider2D otherCollider = Physics2D.OverlapBox(nextPosition, collider.size, 0); if (otherCollider != null && !otherCollider.tag.Equals("tree")) { nextPosition = transform.position; } } transform.position = nextPosition; if (collider.enabled == false) { collider.enabled = true; } } }
protected void EquipGun(GunData gunData, GunComponent gunComponent, GameobjectComponent gameobjectComponent) { gunComponent.gunData = gunData; var sprite = Resources.Load <Sprite>(gunData.spritePath); Debug.Log(gameobjectComponent); gameobjectComponent.spriteRenderer.sprite = sprite; }
public void Update(TankComponent tank, InputComponent input, MoveComponent move, GameobjectComponent gameobjectComponent) { if (tank == null || tank.enable == false) { return; } //Debug.Log("contorller system update, entity tag: " + tank.entity.identity.tag); MoveControl(tank, input, move, gameobjectComponent.transform, gameobjectComponent); }
public void InitGun(int gunID, GunComponent gunComponent, GameobjectComponent gameobjectComponent) { if (gunComponent == null || gunComponent.enable == false) { return; } Debug.Log("GunSystem.Init"); EquipGun(EquipmentManager.GetInstance().GetGun(1), gunComponent, gameobjectComponent); }
//void GenerateGun(Entity entity) //{ // Entity gunEntity = world.entitySystem.NewPawn(gunPrefab, entity.gameobjectComponent.transform.position); // gunEntity.identity.master = entity; //} void EquipBodywork(Bodywork bodywork, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent) { tank.bodywork = bodywork; gameobjectComponent.animator.SetInteger("init", bodywork.animTrigger); var sprite = Resources.Load <Sprite>(bodywork.spritePath); gameobjectComponent.spriteRenderer.sprite = sprite; move.moveSpeed = bodywork.moveSpeed; //GetComponent<Life>().SetHP(b.hp); }
//void GenerateGun(Entity entity) //{ // Entity gunEntity = world.entitySystem.NewPawn(gunPrefab, entity.gameobjectComponent.transform.position); // gunEntity.identity.master = entity; //} void EquipBodywork(Bodywork bodywork, TankComponent tank, MoveComponent move, GameobjectComponent gameobjectComponent) { tank.bodywork = bodywork; gameobjectComponent.animator.SetInteger("init", bodywork.animTrigger); var sprite = Resources.Load <Sprite>(bodywork.spritePath); gameobjectComponent.spriteRenderer.sprite = sprite; move.moveSpeed = bodywork.moveSpeed; world.lifeSystem.SetData(move.entity.lifeComponent, bodywork.hp); Debug.Log("EquipBodywork:" + bodywork.spritePath); }
public void Update(Identity identity, EffectComponent effect, GameobjectComponent gameobjectComponent) { if (effect.enable == false) { return; } Animator animator = gameobjectComponent.animator; AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0); if (info.normalizedTime >= 1.0f) { world.entitySystem.DestroyEntity(identity.entity); } }
public void Update(Identity identity, LaserComponent laser, GameobjectComponent gameobjectComponent) { if (laser == null || laser.enable == false) { return; } if (Time.time < laser.exisingTime) { laser.attackTimer += Time.deltaTime; if (laser.attackTimer >= laser.attackInterval) { laser.attackTimer = 0; Transform transform = gameobjectComponent.transform; RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.up); Debug.DrawLine(transform.position, transform.up * 700); if (hit.collider != null) { //Debug.DrawLine(transform.position, hit.point); EntityHolder entityHolder = hit.collider.gameObject.GetComponent <EntityHolder>(); if (entityHolder == null) { return; } Entity hitEntity = entityHolder.entity; if (hitEntity != identity.master) { Debug.Log("LaserSystem, camps:" + hitEntity.identity.camp.ToString() + identity.camp.ToString()); if (hitEntity.identity.camp != identity.camp && hitEntity.lifeComponent.enable == true) { world.lifeSystem.ChangeHP(hitEntity.lifeComponent, -laser.damage); world.effectSystem.CreateExplosion(hit.point, "small"); } } } } } else { world.entitySystem.DestroyEntity(identity.entity); } }
public Entity CreateGunEntity(GameobjectComponent gameobjectComponent) { // create the entity for gun Transform transform = gameobjectComponent.transform; GameObject gunGo = null; Transform[] children = transform.GetComponentsInChildren <Transform>(); foreach (var t in children) { if (t.tag == "gun") { gunGo = t.gameObject; break; } } Entity gunEntity = world.entitySystem.CreateFor(gunGo); //GenerateGun(entity); return(gunEntity); }
public void Update(GunComponent gunComponent, InputComponent input, GameobjectComponent gameobjectComponent) { if (gunComponent == null || gunComponent.enable == false) { return; } SetDirection(gunComponent, input, gameobjectComponent.transform); gunComponent.timeCount += Time.deltaTime; if (gunComponent.timeCount >= gunComponent.shootCd) { for (int i = 0; i < GunComponent.actions.GetLength(0); i++) { if (InputSystem.GetHoldAction(input, GunComponent.actions[i]) == true) { gunComponent.timeCount = 0; Fire(gunComponent, gameobjectComponent.transform); break; } } } }
public void Update(Identity identity, BulletComponent bullet, MoveComponent move, GameobjectComponent gameobjectComponent) { if (bullet == null || bullet.enable == false) { return; } Transform transform = gameobjectComponent.transform; BoxCollider2D boxCollider2D = gameobjectComponent.collider; Animator animator = gameobjectComponent.animator; boxCollider2D.enabled = false; Collider2D otherCollider = Physics2D.OverlapBox(transform.position, boxCollider2D.size, transform.rotation.z * Mathf.Deg2Rad); if (otherCollider != null) { OnCollision(otherCollider, identity, bullet, animator, boxCollider2D, move); } boxCollider2D.enabled = true; bullet.currentDistance += move.moveSpeed * Time.fixedDeltaTime; AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0); if (bullet.currentDistance > bullet.shootDistance) { world.entitySystem.DestroyEntity(identity.entity); } else if (info.normalizedTime >= 1.0f) { world.entitySystem.DestroyEntity(identity.entity); } }
void MoveControl(TankComponent tank, InputComponent input, MoveComponent move, Transform transform, GameobjectComponent gameobjectComponent) { float spinSpeed = tank.spinSpeed; bool moveForward = InputSystem.GetHoldAction(input, "move_up"); bool moveBack = InputSystem.GetHoldAction(input, "move_down"); bool spinLeft = InputSystem.GetHoldAction(input, "move_left"); bool spinRight = InputSystem.GetHoldAction(input, "move_right"); move.needMove = false; if (moveForward || moveBack) { if (moveForward) { move.moveDirection = 1; } else if (moveBack) { move.moveDirection = -1; } move.needMove = true; spinSpeed /= 2; gameobjectComponent.animator.SetInteger("state", 1); if (tank.trackLeftAnimator != null && tank.trackRightAnimator != null) { tank.trackLeftAnimator.SetBool("move", true); tank.trackRightAnimator.SetBool("move", true); } } else { gameobjectComponent.animator.SetInteger("state", 0); if (tank.trackLeftAnimator != null && tank.trackRightAnimator != null) { tank.trackLeftAnimator.SetBool("move", false); tank.trackRightAnimator.SetBool("move", false); } } if (spinLeft) { transform.Rotate(new Vector3(0, 0, spinSpeed)); } else if (spinRight) { transform.Rotate(new Vector3(0, 0, -spinSpeed)); } BoxCollider2D collider = gameobjectComponent.collider; if (move.needMove == true) { Vector3 directionVec; if (move.moveDirection == 1) { directionVec = transform.up; } else { directionVec = -transform.up; } Vector3 nextPosition = transform.position + directionVec * move.moveSpeed * Time.fixedDeltaTime; if (move.collisionDetection == true) { collider.enabled = false; Collider2D otherCollider = Physics2D.OverlapBox(transform.position + directionVec * 35, new Vector2(40, 20), transform.rotation.eulerAngles.z); if (otherCollider != null && !otherCollider.tag.Equals("tree")) { nextPosition = transform.position; } } transform.position = nextPosition; if (collider.enabled == false) { collider.enabled = true; } } }
void MoveControl(TankComponent tank, InputComponent input, MoveComponent move, Transform transform, GameobjectComponent gameobjectComponent) { foreach (var item in TankComponent.moveActionDict) { if (InputSystem.GetHoldAction(input, item.Key)) { move.moveDirection = item.Value; } } move.needMove = false; foreach (var item in TankComponent.moveActionDict) { if (InputSystem.GetHoldAction(input, item.Key)) { move.needMove = true; break; } } if (move.needMove == true) { //Debug.Log("need move is true"); gameobjectComponent.animator.SetInteger("state", 1); transform.rotation = Quaternion.Euler(0, 0, move.moveDirection * 90); } else { move.moveDirection = -1; gameobjectComponent.animator.SetInteger("state", 0); } }
public void Update(Identity identity, BulletComponent bullet, MoveComponent move, GameobjectComponent gameobjectComponent) { if (bullet == null || bullet.enable == false) { return; } Transform transform = gameobjectComponent.transform; BoxCollider2D boxCollider2D = gameobjectComponent.collider; if (!identity.isDead) { boxCollider2D.enabled = false; Collider2D otherCollider = Physics2D.OverlapBox(transform.position, boxCollider2D.size, transform.rotation.eulerAngles.z); if (otherCollider != null) { OnCollision(otherCollider, identity, bullet, boxCollider2D, move); } boxCollider2D.enabled = true; MoveSystem.MoveForward(transform, move.moveSpeed); bullet.currentDistance += move.moveSpeed * Time.fixedDeltaTime; if (bullet.currentDistance > bullet.shootDistance) { world.entitySystem.DestroyEntity(identity.entity); } } }