// Detections
    private void FacingDetect()
    {
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            facing = FacingState.up;
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            facing = FacingState.right;
            Flip(true);
        }
        else if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            facing = FacingState.left;
            Flip(false);
        }

        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            crouching = true;
        }
        else
        {
            crouching = false;
        }
    }
Beispiel #2
0
        public void faceObject(GameObject a_gameObject)
        {
            double l_angle = MathManager.angle(
                m_position + m_hitbox.p_dimensions / 2,
                a_gameObject.p_position + new Vector2(a_gameObject.getHitBox().X, a_gameObject.getHitBox().Y) / 2
            );

            if (l_angle > 0) {
                if (l_angle <= 70) {
                    m_facingState = FacingState.TopRight;
                } else if (l_angle <= 130 && l_angle > 70) {
                    m_facingState = FacingState.Up;
                } else if (l_angle <= 180 && l_angle > 130) {
                    m_facingState = FacingState.TopLeft;
                }
            } else {
                if (l_angle >= -70) {
                    m_facingState = FacingState.BottomRight;
                } else if (l_angle >= -130 && l_angle < -70) {
                    m_facingState = FacingState.Down;
                } else if (l_angle >= -180 && l_angle < -130) {
                    m_facingState = FacingState.BottomLeft;
                }
            }
        }
        // Use this for initialization
        void Start()
        {
            movementState = MovementState.Standing;
            facingState   = FacingState.Direct;

            inputReceiver.MoveInputReceived += InputReceiver_MoveInputReceived;
        }
	// Update is called once per frame
	void Update () 
	{
		Ray ray = new Ray(head.position,Vector3.right);
		Physics.Raycast(ray,out rayHit,1000,hitLayer);

		if(rayHit.collider == right)
		{
			facing = FacingState.RIGHT;
		}
		else if(rayHit.collider == left)
		{
			facing = FacingState.LEFT;
		}
		else if(rayHit.collider == top)
		{
			facing = FacingState.TOP;
		}
		else
		{
			facing = FacingState.BOT;
		}

		if(move)
		{
			moveObject.transform.position = Vector3.MoveTowards(moveObject.transform.position,targetPosition,.1f);
		}else{
			StartCoroutine(Wait());
		}
	}
Beispiel #5
0
 public void faceTile(Tile a_tile)
 {
     if (a_tile.getMapPosition().X < m_currentPosition.getMapPosition().X)
     {
         if (MathManager.isEven((int)m_currentPosition.getMapPosition().X))
         {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                                         ? m_facingState = FacingState.TopLeft
                                         : m_facingState = FacingState.BottomLeft;
         }
         else
         {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                                         ? m_facingState = FacingState.BottomLeft
                                         : m_facingState = FacingState.TopLeft;
         }
     }
     else if (a_tile.getMapPosition().X > m_currentPosition.getMapPosition().X)
     {
         if (MathManager.isEven((int)m_currentPosition.getMapPosition().X))
         {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                                         ? m_facingState = FacingState.TopRight
                                         : m_facingState = FacingState.BottomRight;
         }
         else
         {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                                         ? m_facingState = FacingState.BottomRight
                                         : m_facingState = FacingState.TopRight;
         }
     }
     else
     {
         m_facingState = a_tile.getMapPosition().Y < m_currentPosition.getMapPosition().Y
                                 ? m_facingState = FacingState.Up
                                 : m_facingState = FacingState.Down;
     }
 }
Beispiel #6
0
        public void faceObject(GameObject a_gameObject)
        {
            double l_angle = MathManager.angle(
                m_position + m_hitbox.p_dimensions / 2,
                a_gameObject.p_position + new Vector2(a_gameObject.getHitBox().X, a_gameObject.getHitBox().Y) / 2
                );

            if (l_angle > 0)
            {
                if (l_angle <= 70)
                {
                    m_facingState = FacingState.TopRight;
                }
                else if (l_angle <= 130 && l_angle > 70)
                {
                    m_facingState = FacingState.Up;
                }
                else if (l_angle <= 180 && l_angle > 130)
                {
                    m_facingState = FacingState.TopLeft;
                }
            }
            else
            {
                if (l_angle >= -70)
                {
                    m_facingState = FacingState.BottomRight;
                }
                else if (l_angle >= -130 && l_angle < -70)
                {
                    m_facingState = FacingState.Down;
                }
                else if (l_angle >= -180 && l_angle < -130)
                {
                    m_facingState = FacingState.BottomLeft;
                }
            }
        }
        private void InternalMove(Vector2 dV)
        {
            dV = dV * speed;
            dV = dV.ApplyFixedDeltaTime();

            lastStep = dV;

            //var newPosition = (Vector2)boxCollider.transform.position + dV;
            var newPosition    = (Vector2)transform.TransformPoint(boxCollider.offset) + dV;
            var newFacingState = dV.ToFacingState();

            var wallHit = Physics2D.BoxCast(newPosition, boxCollider.size, boxCastingAngle, newFacingState.ToVector2(), raycastDistance, wallsMask);
            //var hit = Physics2D.CircleCast(newPosition, circleRadius, newFacingState.ToVector2(), raycastDistance, wallsMask);
            //var hit = Physics2D.Raycast(newPosition, newFacingState.ToVector2(), raycastDistance, wallsMask);

            var hitCaster = GetComponent <HitCaster>();

            if (hitCaster != null)
            {
                hitCaster.CastHitIfNeeded(newFacingState.ToVector2());
            }

            // no wall ahead
            if (wallHit.collider == null)
            {
                transform.Translate(dV);
                facingState = newFacingState;

                //Debug.Log("facingState");
                if (animator.runtimeAnimatorController != null)
                {
                    animator.SetInteger("facingState", (int)facingState);
                }

                // why this event is triggering here?
                OnAfterWallHit(new GameObjectEventArgs(gameObject));
            }
        }
Beispiel #8
0
 private void SetFacingBackwards()
 {
     Facing = FacingState.Backward;
     //CurrentFrameOffset = 5;
 }
Beispiel #9
0
 private void SetFacingForwards()
 {
     Facing = FacingState.Forward;
     //CurrentFrameOffset = 4;
 }
Beispiel #10
0
 public void faceTile(Tile a_tile)
 {
     if (a_tile.getMapPosition().X < m_currentPosition.getMapPosition().X) {
         if (MathManager.isEven((int)m_currentPosition.getMapPosition().X)) {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                 ? m_facingState = FacingState.TopLeft
                 : m_facingState = FacingState.BottomLeft;
         } else {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                 ? m_facingState = FacingState.BottomLeft
                 : m_facingState = FacingState.TopLeft;
         }
     } else if (a_tile.getMapPosition().X > m_currentPosition.getMapPosition().X) {
         if (MathManager.isEven((int)m_currentPosition.getMapPosition().X)) {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                 ? m_facingState = FacingState.TopRight
                 : m_facingState = FacingState.BottomRight;
         } else {
             m_facingState = a_tile.getMapPosition().Y == m_currentPosition.getMapPosition().Y
                 ? m_facingState = FacingState.BottomRight
                 : m_facingState = FacingState.TopRight;
         }
     } else {
         m_facingState = a_tile.getMapPosition().Y < m_currentPosition.getMapPosition().Y
             ? m_facingState = FacingState.Up
             : m_facingState = FacingState.Down;
     }
 }