//funcion que swithchea dependiendo del input recibido para targetear enemigo //EnemyPosition.close: es para el enemigo que este mas cerca void NewTarget(EnemyPosition findPosition) { if (enemiesClose.Count == 0) { ExitBattleMode(); return; } _thresholdEnemy = 200; switch (findPosition) { case EnemyPosition.right: TargetNewEnemyLeftOrRight(findPosition); break; case EnemyPosition.left: TargetNewEnemyLeftOrRight(findPosition); break; case EnemyPosition.close: TargetNewEnemy(); break; case EnemyPosition.up: TargetNewEnemyUpOrDown(findPosition); break; case EnemyPosition.down: TargetNewEnemyUpOrDown(findPosition); break; default: break; } }
//obtiene el enemigo mas cercano dependiendo del movimiento (derecha o izquierda) recibido por el joystick derecho void TargetNewEnemyLeftOrRight(EnemyPosition findPosition) { //calculamos un punto donde mira saru para poder calcular su vector Vector2 positionLook = new Vector2(playerModel.transform.forward.x + transform.position.x, playerModel.transform.forward.z + transform.position.z); //calculamos el vector hacia donde mira saru desde su ubicacion Vector2 actualLookAt = new Vector2(positionLook.x - transform.position.x, positionLook.y - transform.position.z); //esta variable sirve para guardar el enemigo que tenemos tarjeteado antes de comprobar todos ya que _enemytarget cambia dentro del foreach Transform actualTarget = _enemyTarget; foreach (Transform enemy in enemiesClose) { if (actualTarget == enemy) { continue; } //calculamos el vector hacia donde esta el enemigo desde la posicion de Saru Vector2 enemyPlayerPosition = new Vector2(enemy.position.x - transform.position.x, enemy.position.z - transform.position.z); float leftOrRight = actualLookAt.x * enemyPlayerPosition.y - actualLookAt.y * enemyPlayerPosition.x; if ((leftOrRight > 0 && findPosition == EnemyPosition.right) || (leftOrRight < 0 && findPosition == EnemyPosition.left)) { float threshold = Vector2.Angle(actualLookAt, enemyPlayerPosition); if (_thresholdEnemy > threshold) { NextTarget(leftOrRight, enemy); } } } if (actualTarget != _enemyTarget) { _actualTimeTargetEnemyWithDirection = _timeToTargetNewEnemy; } }
//obtiene el enemigo mas cercano dependiendo del movimiento (arriba o abajo) recibido por el joystick derecho void TargetNewEnemyUpOrDown(EnemyPosition findPosition) { //esta variable sirve para guardar el enemigo que tenemos tarjeteado antes de comprobar todos ya que _enemytarget cambia dentro del foreach Transform actualTarget = _enemyTarget; //variable necesaria para que el mismo codigo funcione para up y para down int upOrDown = findPosition == EnemyPosition.up? -1 : 1; _thresholdEnemy = (transform.position - _enemyTarget.position).magnitude * upOrDown; float distance; float lastDistance = -100; foreach (Transform enemy in enemiesClose) { if (actualTarget == enemy) { continue; } //calculamos el vector hacia donde esta el enemigo desde la posicion de Saru distance = (transform.position - enemy.position).magnitude * upOrDown; if ((distance < _thresholdEnemy) && (distance > lastDistance)) { NextTarget(distance, enemy); lastDistance = distance; _actualTimeTargetEnemyWithDirection = _timeToTargetNewEnemy; } } if (actualTarget != _enemyTarget) { _actualTimeTargetEnemyWithDirection = _timeToTargetNewEnemy; target.transform.localScale = new Vector3(.2f, .2f, .2f); } }
public override Quaternion RotationTransform(EnemyPosition position, float deltaTime) { var playerPosition = GameObject.Find("player").transform; var vectorToTarget = playerPosition.position - position.Center; var angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg; var q = Quaternion.AngleAxis(angle, Vector3.forward); return Quaternion.Slerp(position.Rotation, q, Time.deltaTime); }
void Start() { animator = GetComponent <Animator> (); player = GameObject.FindGameObjectWithTag("Player"); playerHealth = player.GetComponent <PlayerHealth> (); position = GetComponent <EnemyPosition>(); canAttackPlayer = true; }
protected virtual void BeginAttack() { enemyPosition = GetComponentInParent <EnemyPosition>(); enemyMove = GetComponentInParent <EnemyMove>(); attackBoxVector = enemyPosition.GetEnemyPosition(); directionModifier = 1; this.gameObject.SetActive(false); }
public override Quaternion RotationTransform(EnemyPosition position, float deltaTime) { var playerPosition = GameObject.Find("player").transform; var vectorToTarget = playerPosition.position - position.Center; var angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg; var q = Quaternion.AngleAxis(angle, Vector3.forward); return(Quaternion.Slerp(position.Rotation, q, Time.deltaTime)); }
protected override void OnAwake() { _health = 30f + UnityEngine.Random.value * 20f; _movePosition = GetComponent <EnemyPosition>(); _baseSpeed = _movePosition.speed; animation["gothit"].layer = 20; animation["die"].layer = 20; animation["attack"].layer = 10; _hipPosition = hips.localPosition; _emitter = GetComponentInChildren <ParticleEmitter>(); _emitter.emit = false; }
protected override void OnAwake() { _health = 30f + UnityEngine.Random.value * 20f; _movePosition = GetComponent<EnemyPosition>(); _baseSpeed = _movePosition.speed; animation["gothit"].layer = 20; animation["die"].layer = 20; animation["attack"].layer = 10; _hipPosition = hips.localPosition; _emitter = GetComponentInChildren<ParticleEmitter>(); _emitter.emit = false; }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { Vector3 perpendicular = new Vector3(up.y, -up.x, 0); Vector3 x = up * deltaTime; Vector3 t = x + (perpendicular * Time.deltaTime * ZigZagLength * Direction); TimeSinceLastChange += deltaTime; if (TimeSinceLastChange >= SecondsToSwitch) { TimeSinceLastChange = 0; Direction = -Direction; } return t; }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { Vector3 perpendicular = new Vector3(up.y, -up.x, 0); Vector3 x = up * deltaTime; Vector3 t = x + (perpendicular * Time.deltaTime * ZigZagLength * Direction); TimeSinceLastChange += deltaTime; if (TimeSinceLastChange >= SecondsToSwitch) { TimeSinceLastChange = 0; Direction = -Direction; } return(t); }
public void TelekinesiaAttack(GameObject target) { if (playerHealth.canCastSpell(telekinesiaCost) && target != null) { playerHealth.castSpell(telekinesiaCost); switchTarget(target); transform.forward = -target.transform.position; animator.SetTrigger("DirectSpell"); Object spell = Instantiate(telekinesia, target.transform.position, target.transform.rotation); EnemyPosition enemyPosition = target.GetComponent <EnemyPosition>(); enemyPosition.Rotate(); Destroy(spell, 1f); } }
public void alertOthers() { Collider[] hitColliders = Physics.OverlapSphere(gameObject.transform.position, 5f); int i = 0; while (i < hitColliders.Length) { if (hitColliders[i].tag == "Enemy" && Vector3.Distance(gameObject.transform.position, hitColliders[i].transform.position) < 1.7f && hitColliders[i].GetType() == typeof(BoxCollider)) { EnemyPosition enemyPosition = hitColliders[i].GetComponent <EnemyPosition>(); enemyPosition.Rotate(); } i++; } }
public void Update(GameObject obj, float deltaTime) { if (IsOutOfView(obj.transform.position)) { GameObject.DestroyImmediate(obj); Spawner.EnemyDied(); // TODO move enemy count into some controlled global state if (!HealthBar.IsDead()) // TODO health does not make sense to be on a healthbar but instead a player a part of the global state { GameStats.points++; } } else { var position = EnemyPosition.FromTransform(obj.transform); obj.transform.position += EnemyMovement.PositionTransform(position, deltaTime) * EnemyMovement.speed * GetSpeedMultiplier(); obj.transform.rotation = EnemyMovement.RotationTransform(position, deltaTime); } }
public override void setPosition(EnemyPosition pos) { base.setPosition(pos); switch (pos) { case EnemyPosition.LEFT_2: case EnemyPosition.LEFT_3: HPtrans.anchoredPosition = new Vector3(-268f, HPtrans.anchoredPosition.y, -14f); break; case EnemyPosition.RIGHT_2: case EnemyPosition.RIGHT_3: HPtrans.anchoredPosition = new Vector3(267f, HPtrans.anchoredPosition.y, -14f); break; default: break; } }
public void Init() { Player = GameObject.FindWithTag("Player").GetComponent <Player>(); ConfirmButton = GameObject.Find("ConfirmButton").GetComponent <Button>(); _confirmEvent = ConfirmButton.transform.GetComponent <ConfirmButtonEventManager>(); _confirmButtonText = ConfirmButton.GetComponentsInChildren <Image>()[1]; //_confirmCore = ConfirmButton.transform.parent.transform.Find("Core").GetComponent<Image>(); ConfirmButton.onClick.AddListener(ConfirmEngines); ConfirmButton.gameObject.SetActive(false); _commenceAnim = ConfirmButton.transform.parent.GetComponent <Animator>(); _confirmButtonSprite[0] = Resources.Load <Sprite>("Sprites/Core/Gear"); _confirmButtonSprite[1] = Resources.Load <Sprite>("Sprites/Core/Gear2"); playerHealthBar = GameObject.Find("PlayerHealth").GetComponent <HealthBar>(); enemyHealthBar = GameObject.Find("EnemyHealth").GetComponent <HealthBar>(); //_playerText = GameObject.Find("PlayerText").GetComponent<UIPopIn>(); //_enemyText = GameObject.Find("EnemyText").GetComponent<UIPopIn>(); //_resultText = GameObject.Find("ResultText").GetComponent<UIPopIn>(); //_clashText = GameObject.Find("ClashText").GetComponent<UIPopIn>(); //BattleState = BattleStates.MakingEngines; _playerAttack = null; Engines = new Engine[3]; Engines[0] = GameObject.Find("Engine1").GetComponent <Engine>(); Engines[1] = GameObject.Find("Engine2").GetComponent <Engine>(); Engines[2] = GameObject.Find("Engine3").GetComponent <Engine>(); //GameManager.Instance.StartBattle(); //get move UI _mainCanvas = GameObject.Find("MainCanvas").transform; Transform posPanel = _mainCanvas.Find("PositionsPanel"); //get move set Transform moveSet = posPanel.transform.Find("MoveButton"); _moveUI = moveSet.GetComponent <MovePlayerDialog>(); _moveUIAura = _moveUI.transform.parent.transform.Find("PlayerPos").GetComponentInChildren <Animator>(); //get enemyPos enemyPos = posPanel.transform.Find("EnemyPos").GetComponent <EnemyPosition>(); }
/// <summary> /// Scans to find enemies and alliew within sight range, all enemies found are then added to the list and then any allies found are also scanned from /// </summary> /// <returns>The found enemies</returns> /// <param name="_actor">the actor scanning</param> private List<EnemyPosition> EnemyScan (AIActor _actor, List<EnemyPosition> _enemies, List<ActorBase> _allies) { List<EnemyPosition> enemyData = new List<EnemyPosition> (); //search all trocts within sight range of the actor. for (int i = 0; i < topology.Count; i++) { //if within range and not inFow & in the active list if (Vector3.Distance (_actor.gameObject.transform.position, topology [i].gameObject.transform.position) < _actor.viewDistance && !topology [i].GetComponent<TruncOct> ().inFow && topology [i].GetComponent<TruncOct> ().containedActor != null) { ActorBase actorFound = topology [i].GetComponent<TruncOct> ().containedActor.GetComponent<ActorBase> (); //Test if the actor is on this team if (topology [i].GetComponent<TruncOct> ().containedActor.GetComponent<ActorBase> ().Team == _actor.Team) { //if so they are added to the allies list after seeing whether they have already been scanned if (!_allies.Contains (actorFound)) { _allies.Add (actorFound); //scan the actorfound in this case _enemies.AddRange(EnemyScan(actorFound.gameObject.GetComponent<AIActor>(), _enemies, _allies)); } } else { EnemyPosition enemy = new EnemyPosition (); enemy.enemy = actorFound; enemy.enemyLocation = actorFound.currentTrOct.GetComponent<TruncOct>(); //if the found enemy is not currently in the list, add it in if (!_enemies.Contains(enemy)) { _enemies.Add (enemy); } } } } return _enemies; }
public virtual void setPosition(EnemyPosition pos) { float spriteX = 0f, spriteY = 95f, spriteZ = -9f; float UIx = 0, UIy = 165f, UIz = -14f; switch (pos) { case EnemyPosition.CENTER_1: /* Do nothing */ break; case EnemyPosition.LEFT_2: spriteX = -48f; UIx = -240f; break; case EnemyPosition.RIGHT_2: spriteX = 48f; UIx = 240f; break; case EnemyPosition.LEFT_3: spriteX = -72f; UIx = -300f; break; case EnemyPosition.CENTER_3: UIy = 785f; break; case EnemyPosition.RIGHT_3: spriteX = 72f; UIx = 300; break; default: break; } trans.position = new Vector3(spriteX, spriteY, spriteZ); skillRectTrans.anchoredPosition = new Vector3(spriteX * 5, 335f, UIz); HPtrans.anchoredPosition = new Vector3(UIx, UIy, UIz); }
public override Quaternion RotationTransform(EnemyPosition position, float deltaTime) { return(position.Rotation.Rotate(0, 0, RotationInDegrees)); }
public EnemyInformation_V2(GameObject enemy, EnemyPositionState state, EnemyPosition script) { this.position = enemy; this.state = state; this.positionScript = script; }
void Begin() { newEnemyPositionX = 0; direction = false; enemyPosition = GetComponent <EnemyPosition>(); }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { return position.Right * deltaTime; }
public virtual Vector3 PositionTransform(EnemyPosition position, float deltaTime) { return(Vector3.zero); }
public virtual Quaternion RotationTransform(EnemyPosition position, float deltaTime) { return(position.Rotation); }
public void MoveToTarget() { enemyPathList.Clear(); for (int i = 0; i < enemyAI.playersList.Count; i++) { if (target == enemyAI.playersList[i]) { reassign = false; break; } else { reassign = true; } } if(reassign == true) { target = enemyAI.playersList[Random.Range(0, enemyAI.playersList.Count)]; } CharacterMove targetMovement = GameObject.Find(target.name).GetComponent<CharacterMove>(); moveCounter = charStat.GetMovementRange(); movePathCounter = 0; targetFound = false; int nextRow = curRow; int nextCol = curCol; while (performMovement == false) { if (enemyPathList.Count == 0) { EnemyPosition firstPos = new EnemyPosition(); firstPos.row = curRow; firstPos.col = curCol; enemyPathList.Add(firstPos); } if (CheckIfPlayerCharacterNear(nextRow, nextCol) == true) { targetFound = true; performMovement = true; } else if (moveCounter <= 0) { performMovement = true; } else { if (targetMovement.GetCurCol() < nextCol) { EnemyPosition ep = new EnemyPosition(); ep.row = nextRow; ep.col = nextCol - 1; nextCol -= 1; enemyPathList.Add(ep); moveCounter--; } else if (targetMovement.GetCurCol() > nextCol) { EnemyPosition ep = new EnemyPosition(); ep.row = nextRow; ep.col = nextCol + 1; nextCol += 1; enemyPathList.Add(ep); moveCounter--; } else if(targetMovement.GetCurRow() < nextRow) { EnemyPosition ep = new EnemyPosition(); ep.row = nextRow - 1; ep.col = nextCol; nextRow -= 1; enemyPathList.Add(ep); moveCounter--; } else if (targetMovement.GetCurRow() > nextRow) { EnemyPosition ep = new EnemyPosition(); ep.row = nextRow + 1; ep.col = nextCol; nextRow += 1; enemyPathList.Add(ep); moveCounter--; } } } }
public override Quaternion RotationTransform(EnemyPosition position, float deltaTime) { return position.Rotation.Rotate(0, 0, 10 * deltaTime); }
public EnemyInformation(GameObject enemy, EnemyType type, EnemyPosition script) { this.position = enemy; this.type = type; this.positionScript = script; }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { up = Quaternion.Euler(0, 0, .1F) * up; return(up * deltaTime); }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { return(position.Up * deltaTime); }
void Begin() { enemyStates = GetComponent <EnemyStates>(); enemyPosition = GetComponent <EnemyPosition>(); }
public override Vector3 PositionTransform(EnemyPosition position, float deltaTime) { up = Quaternion.Euler(0, 0, .1F) * up; return up * deltaTime; }