public InteractableBase FindUsableInteractable() { Collider2D[] closeColliders = GetCloseColliders(); InteractableBase closestInteractable = null; float angleToClosestInteractble = Mathf.Infinity; for (int i = 0; i < closeColliders.Length; ++i) { InteractableBase colliderInteractable = closeColliders[i].GetComponent <InteractableBase>(); if (colliderInteractable == null) { continue; } Vector3 directionToInteractble = closeColliders[i].transform.position - transform.position; float angleToInteractable = Vector3.Angle(m_MovementModel.GetFacingDirection(), directionToInteractble); if (angleToInteractable < 40) { if (angleToInteractable < angleToClosestInteractble) { closestInteractable = colliderInteractable; angleToClosestInteractble = angleToInteractable; } } } return(closestInteractable); }
//public void DoRangeProjectile() //{ // playerStats.DeductProjectiletNumber(); // Vector2 facingDirection = m_movementModel.GetFacingDirection(); // GameObject cloneObject = null; // cloneObject = Instantiate(projectileObject); // cloneObject.transform.position = gameObject.transform.parent.position; // if (facingDirection == new Vector2(0, 1)) // { // cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y + 0.25f); // cloneObject.transform.position = new Vector2(transform.position.x + 0.25f, transform.position.y + 0.25f); // cloneObject.transform.position = new Vector2(transform.position.x - 0.25f, transform.position.y + 0.25f); // } // else if (facingDirection == new Vector2(0, -1)) // cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y - 0.25f); // else if (facingDirection == new Vector2(1, 0)) // cloneObject.transform.position = new Vector2(transform.position.x + 0.25f, transform.position.y); // else // cloneObject.transform.position = new Vector2(transform.position.x - 0.25f, transform.position.y); // Projectile projectile = cloneObject.GetComponent<Projectile>(); // projectile.SetDirectionTowardsPlayerFacing(); // cloneObject.SetActive(true); //} public void DoPorjectile() { playerStats.DeductProjectiletNumber(); projectileFacingDirection = m_movementModel.GetFacingDirection(); cloneObject = Instantiate(projectileObject); if (projectileFacingDirection == new Vector2(0, 1)) { cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y + 0.25f); } else if (projectileFacingDirection == new Vector2(0, -1)) { cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y - 0.25f); } else if (projectileFacingDirection == new Vector2(1, 0)) { cloneObject.transform.position = new Vector2(transform.position.x + 0.25f, transform.position.y); } else { cloneObject.transform.position = new Vector2(transform.position.x - 0.25f, transform.position.y); } Projectile projectile = cloneObject.GetComponent <Projectile>(); projectile.SetDirectionTowardsPlayerFacing(); cloneObject.SetActive(true); }
//Find the closest object that which we may push (similar to closest interactable) private Pushable FindClosestPushable() { Collider2D[] closeColliders = m_InteractionModel.GetCloseColliders(); Pushable closestPushable = null; float angleToClosestPushable = Mathf.Infinity; for (int i = 0; i < closeColliders.Length; ++i) { Pushable colliderPushable = closeColliders[i].GetComponent <Pushable>(); if (colliderPushable == null) { continue; } Vector3 directionToPushable = closeColliders[i].transform.position - transform.position; float angleToPushable = Vector3.Angle(m_MovementModel.GetFacingDirection(), directionToPushable); Debug.Log(i + ": " + angleToPushable); if (angleToPushable < 40) { if (angleToPushable < angleToClosestPushable) { closestPushable = colliderPushable; angleToClosestPushable = angleToPushable; } } } return(closestPushable); }
private void Update() { m_movementModel = PlayerInstant.Instance.GetComponent <CharacterMovementModel>(); Vector2 facingDirection = m_movementModel.GetFacingDirection(); if (facingDirection.x == 1) { m_collider2D.offset = new Vector2(0.4f, 0f); } else if (facingDirection.x == -1) { m_collider2D.offset = new Vector2(-0.4f, 0f); } else if (facingDirection.y == -1) { m_collider2D.offset = new Vector2(0f, -0.4f); } else if (facingDirection.y == 1) { m_collider2D.offset = new Vector2(0f, 0.4f); } }
public override void OnSpawn() { foreach (ProjectilePrefab projectile in ProjectilePrefabs) { /* * Okay so to get the component from an object in the list, I need to take it from the name I assign it in the foreach loop */ Vector3 startingPosition = transform.position + projectile.SpawnPosition; //The position where the projectile spawns Vector3 facingDirection = m_MovementModel.GetFacingDirection(); projectile.TargetDirection = facingDirection; if (facingDirection.x == 0 && facingDirection.y == -1) { startingPosition = new Vector3(startingPosition.x, startingPosition.y - 1); } else if (facingDirection.x == 0 && facingDirection.y == 1) { startingPosition = new Vector3(startingPosition.x, startingPosition.y + 1); } else if (facingDirection.x == 1 && facingDirection.y == 0) { startingPosition = new Vector3(startingPosition.x + 1, startingPosition.y); } else if (facingDirection.x == -1 && facingDirection.y == 0) { startingPosition = new Vector3(startingPosition.x - 1, startingPosition.y); } projectile.Prefab.GetComponent <ProjectileMovement>().startingPosition = startingPosition; projectile.Prefab.GetComponent <ProjectileMovement>().targetDirection = projectile.TargetDirection; projectile.Prefab.GetComponent <ProjectileMovement>().Speed = projectile.Speed; GameObject prefabInstance = Instantiate(projectile.Prefab, startingPosition, Quaternion.identity); //First we make the projectile appear prefabInstance.GetComponent <ProjectileMovement>().OnSpawn(); } }
InteractableBase FindUsableInteractable() { var closeColliders = Physics2D.OverlapCircleAll(transform.position, 1f); float angleToClosestInteractable = Mathf.Infinity; InteractableBase closestInteractable = null; foreach (var collider in closeColliders) { InteractableBase interactable = collider.GetComponent <InteractableBase>(); if (interactable == null) { continue; } Vector3 directionToInteractable = collider.transform.position - transform.position; var angleToInteractable = Vector3.Angle(_movementModel.GetFacingDirection(), directionToInteractable); if (angleToInteractable < 40) { if (angleToInteractable < angleToClosestInteractable) { angleToClosestInteractable = angleToInteractable; closestInteractable = interactable; } } } return(closestInteractable); }
//This method is used to find the closest interactable to the player public InteractableBase FindUsableInteractable() { Collider2D[] closeColliders = GetCloseColliders(); //Gets an array of the closest interactable to the player InteractableBase closestInteractable = null; //Which is closest found one float angleToClosestInteractble = Mathf.Infinity; //Facing the interactable for (int i = 0; i < closeColliders.Length; ++i) //Loop through our interactables { InteractableBase colliderInteractable = closeColliders[i].GetComponent <InteractableBase>(); //Get the parent component of the collider if (colliderInteractable == null) { continue; } Vector3 directionToInteractble = closeColliders[i].transform.position - transform.position; //The vector between us and the interactable float angleToInteractable = Vector3.Angle(m_MovementModel.GetFacingDirection(), directionToInteractble); if (angleToInteractable < 40) //if deg is less than fourty, then we are facing it enough { if (angleToInteractable < angleToClosestInteractble) { closestInteractable = colliderInteractable; angleToClosestInteractble = angleToInteractable; } } } return(closestInteractable); }
private void CreateInstantiatePikcup() { GameObject tempDecoy = Instantiate(tempInstantiateObject); tempDecoy.SetActive(true); CharacterMovementModel m_movementModel = playerInstance.GetComponent <CharacterMovementModel>(); Vector2 facingDirection = m_movementModel.GetFacingDirection(); if (facingDirection.x == 1) { tempDecoy.transform.position = new Vector3 (playerInstance.transform.position.x + 0.5f, playerInstance.transform.position.y, 0); } else if (facingDirection.x == -1) { tempDecoy.transform.position = new Vector3 (playerInstance.transform.position.x - 0.5f, playerInstance.transform.position.y, 0); } else if (facingDirection.y == 1) { tempDecoy.transform.position = new Vector3 (playerInstance.transform.position.x, playerInstance.transform.position.y + 0.5f, 0); } else { tempDecoy.transform.position = new Vector3 (playerInstance.transform.position.x, playerInstance.transform.position.y - 0.5f, 0); } }
InteractableBase FindUsableInteractable() { Collider2D[] closeColliders = Physics2D.OverlapCircleAll(transform.position, 0.8f); InteractableBase clostestInteractable = null; float angleToclosestInteractable = Mathf.Infinity; for (int i = 0; i < closeColliders.Length; i++) { InteractableBase colliderInteractable = closeColliders[i].GetComponent <InteractableBase>(); if (colliderInteractable == null) { continue; } Vector3 directionToInteractable = closeColliders[i].transform.position - transform.position; float angleToInteractable = Vector3.Angle(m_MovementModel.GetFacingDirection(), directionToInteractable); if (angleToInteractable < 45) { if (angleToInteractable < angleToclosestInteractable) { clostestInteractable = colliderInteractable; } } } return(clostestInteractable); }
protected virtual void OnTriggerEnter2D(Collider2D collider2D) { if (aiBase != null && aiBase.GetEnemyAction() == enumEnemyActions.defend) { return; } if (collider2D.tag == "Punch" && m_movementModel.GetPushBackSpeed() == 0f) { if (GetComponentInChildren <Attackable>() == null) { Debug.Log(transform.parent.name); } int damage = playerStats.GetComponentInChildren <Attackable>().GetDamage(); attackerMovementModel = collider2D.GetComponentInParent <CharacterMovementModel>(); DoHit(damage, attackerMovementModel.GetFacingDirection()); } if (collider2D.tag == "PlayerProjectile" && m_movementModel.GetPushBackSpeed() == 0f) { if (health <= 0) { return; } Destroy(collider2D.gameObject); DoHit(1, collider2D.GetComponent <Projectile>().GetMovementDirection()); } if (collider2D.tag == "PlayerHazard" && m_movementModel.GetPushBackSpeed() == 0f) { if (health <= 0) { return; } Vector2 movementDirection = transform.parent.GetComponent <CharacterMovementModel>().GetReverseFacingDirection(); Debug.Log(movementDirection); DoHit(1, movementDirection); } if (collider2D.tag == "PlayerBombRing" && m_movementModel.GetPushBackSpeed() == 0f) { if (health <= 0) { return; } Vector2 hitDirection = collider2D.GetComponentInParent <PlayerBomb>().GetHitDirection(transform); DoHit(1, hitDirection); } }
private void UpdateDirection() { Vector2 direction = m_MovementModel.GetFacingDirection(); if (direction != Vector2.zero) { if (direction.x != 1 || direction.y != 1) { animator.SetFloat("DirX", direction.x); animator.SetFloat("DirY", direction.y); } } animator.SetBool("IsMoving", m_MovementModel.IsMoving()); }
protected void UpdateDirection() { Vector3 direction = m_MovementModel.GetFacingDirection(); if (direction != Vector3.zero) { if (direction.x != 1 || direction.y != 1) { Animator.SetFloat("DirectionX", direction.x); Animator.SetFloat("DirectionY", direction.y); } } Animator.SetBool("IsMoving", m_MovementModel.IsMoving()); }
//Update our direction private void UpdateDirection() { Vector3 direction = m_MovementModel.GetFacingDirection(); //Where we are facing if (direction != Vector3.zero) { if (direction.x != 1 || direction.y != 1) { Animator.SetFloat("DirectionX", direction.x); Animator.SetFloat("DirectionY", direction.y); } } Animator.SetBool("IsMoving", m_MovementModel.IsMoving()); //Set that we are moving }
virtual public void UpdateDirection() { Vector3 direction = m_MovementModel.GetFacingDirection(); if (direction != Vector3.zero) { if (direction.x != 1 || direction.y != 1) { Animator.SetFloat("DirectionX", direction.x); Animator.SetFloat("DirectionY", direction.y); } } if (m_MovementModel.m_IsRunning == false) { Animator.SetBool("IsMoving", m_MovementModel.IsMoving()); } }
protected IEnumerator DoProjectile() { float waitBeforeShoot = 3; float waitForAni = 1; yield return(new WaitForSeconds(waitBeforeShoot - waitForAni)); m_Animator.SetBool("Shoot", true); yield return(new WaitForSeconds(waitForAni)); m_Animator.SetBool("Shoot", false); Vector2 facingDirection = m_movementModel.GetFacingDirection(); GameObject cloneObject = Instantiate(projectileObject); cloneObject.transform.position = gameObject.transform.parent.position; if (facingDirection == new Vector2(0, 1)) { cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y + 0.25f); } else if (facingDirection == new Vector2(0, -1)) { cloneObject.transform.position = new Vector2(transform.position.x, transform.position.y - 0.25f); } else if (facingDirection == new Vector2(1, 0)) { cloneObject.transform.position = new Vector2(transform.position.x + 0.25f, transform.position.y); } else { cloneObject.transform.position = new Vector2(transform.position.x - 0.25f, transform.position.y); } cloneObject.SetActive(true); cloneObject.GetComponent <Projectile>().SetDirectionTowardsPlayer(); yield return(new WaitForSeconds(3)); StartCoroutine(DoProjectile()); }
override protected void OnTriggerEnter2D(Collider2D collider2D) { if (m_movementModel.IsInPushBack()) { return; } if (collider2D.tag == "EnemyProjectile" && m_movementModel.GetPushBackSpeed() == 0f) { DoDoHit(1, collider2D.GetComponent <Projectile>().GetHitDirection()); collider2D.GetComponent <Projectile>().DestroyOnHit(); } if (collider2D.tag == "Enemy" && m_movementModel.GetPushBackSpeed() == 0f) { Attackable attackerAttackable = collider2D.transform.parent.gameObject. GetComponentInChildren <Attackable>(); if (attackerAttackable != null) { if (attackerAttackable.GetHealth() <= 0) { return; } } CharacterMovementModel attackerMovementModel = collider2D.GetComponentInParent <CharacterMovementModel>(); attackerMovementModel.SetTemporaryFrozen(1); DoDoHit(1, attackerMovementModel.GetFacingDirection()); } if (collider2D.tag == "Hazard" && m_movementModel.GetPushBackSpeed() == 0f) { DoDoHit(1, GetComponentInParent <CharacterMovementModel>().GetReverseFacingDirection()); } if (collider2D.tag == "BombRing" && m_movementModel.GetPushBackSpeed() == 0f) { DoBombHit(collider2D, collider2D.gameObject.GetComponentInParent <BombExplosion>().GetDamage()); } }
private void OnTriggerStay2D(Collider2D collider) { if (warping) { return; } if (collider.gameObject.tag == "Player") { colliderMovementModel = collider.GetComponentInParent <CharacterMovementModel>(); Vector2 facingDirection = colliderMovementModel.GetFacingDirection(); if (facingDirection == new Vector2(0, 1)) { warping = true; spriteDoor.enabled = true; StartCoroutine(Warp()); } } }
InteractableBase FindUsableInteracable() { //Debug.Log("List of Interactables: "); Collider2D[] closeColliders = Physics2D.OverlapCircleAll(transform.position, 0.8f); InteractableBase closestInteractable = null; float angleToClosestInteractble = Mathf.Infinity; for (int i = 0; i < closeColliders.Length; ++i) { //Debug.Log(i + ": " + closeColliders[i].name); InteractableBase colliderInteractable = closeColliders[i].GetComponent <InteractableBase>(); if (colliderInteractable == null) { continue; } Vector3 directionToInteractble = closeColliders[i].transform.position - transform.position; float angleToInteractable = Vector3.Angle(m_MovementModel.GetFacingDirection(), directionToInteractble); //Debug.Log(i + ": " + closeColliders[i].name + " - " + angleToInteractable); //Debug.Log(m_MovementModel.GetDirection() + " - " + directionToInteractble); if (angleToInteractable < 40) { if (angleToInteractable < angleToClosestInteractble) { closestInteractable = colliderInteractable; angleToClosestInteractble = angleToInteractable; } } } return(closestInteractable); }
protected void DoPushBack(Vector2 hitDirection) { m_movementModel.DoPushBack(attackerMovementModel.GetFacingDirection(), pushBackTime, pushBackSpeed); }