//// Update is called once per frame void Update() { FacedDirection tryRotateDirection; //Handle Player input // DONT PUT FLOOR UNDER A WALL if ((Input.GetKeyDown(KeyCode.W) && witchMove.GetHorizontal() == -1) || (Input.GetKeyDown(KeyCode.S) && witchMove.GetHorizontal() == 1)) { tryRotateDirection = RotateDirectionLeft(); if (witchMove.UpdateToFacedDirection(tryRotateDirection, degree + 90f, Level, WorldUnits)) { facedDirection = tryRotateDirection; degree += 90f; } } else if ((Input.GetKeyDown(KeyCode.W) && witchMove.GetHorizontal() == 1) || (Input.GetKeyDown(KeyCode.S) && witchMove.GetHorizontal() == -1)) { tryRotateDirection = RotateDirectionRight(); if (witchMove.UpdateToFacedDirection(tryRotateDirection, degree - 90f, Level, WorldUnits)) { facedDirection = tryRotateDirection; degree -= 90f; } } seeThroughBuilding(Player.transform.position); }
// Use this for initialization void Start() { //Define our faced direction, must be the same as built in inspector //Cache our fezMove script located on the player and update our level data (create invisible cubes) facedDirection = FacedDirection.Front; witchMove = Player.GetComponent <WitchMove>(); }
private void FlipDir() { Facing = (FacedDirection)((int)Facing * -1f); Vector3 LocalScale = ThisTransform.localScale; LocalScale.x *= -1f; ThisTransform.localScale = LocalScale; }
public bool UpdateToFacedDirection(FacedDirection newDirection, float angle, Transform level, float worldUnits) { Vector3 centerposition = Vector3.zero; //transform.position = new Vector3((int)transform.position.x + 1f, transform.position.y, (int)transform.position.z + 1f); foreach (Transform platform in level) { if (Mathf.Abs(platform.transform.position.x - transform.position.x) < worldUnits * 0.6 && Mathf.Abs(platform.transform.position.z - transform.position.z) < worldUnits * 0.6 && Mathf.Abs(platform.transform.position.y + worldUnits - transform.position.y) < worldUnits) { centerposition.Set(platform.transform.position.x, platform.transform.position.y + 1, platform.transform.position.z); break; } } foreach (Transform platform in level) { if ((centerposition != Vector3.zero) && (((Horizontal == -1 && newDirection == FacedDirection.Back && platform.transform.position == new Vector3(centerposition.x + 1, centerposition.y - 1, centerposition.z)) || (Horizontal == -1 && newDirection == FacedDirection.Front && platform.transform.position == new Vector3(centerposition.x - 1, centerposition.y - 1, centerposition.z)) || (Horizontal == -1 && newDirection == FacedDirection.Left && platform.transform.position == new Vector3(centerposition.x, centerposition.y - 1, centerposition.z + 1)) || (Horizontal == -1 && newDirection == FacedDirection.Right && platform.transform.position == new Vector3(centerposition.x, centerposition.y - 1, centerposition.z - 1))) || ((Horizontal == 1 && newDirection == FacedDirection.Back && platform.transform.position == new Vector3(centerposition.x - 1, centerposition.y - 1, centerposition.z)) || (Horizontal == 1 && newDirection == FacedDirection.Front && platform.transform.position == new Vector3(centerposition.x + 1, centerposition.y - 1, centerposition.z)) || (Horizontal == 1 && newDirection == FacedDirection.Left && platform.transform.position == new Vector3(centerposition.x, centerposition.y - 1, centerposition.z - 1)) || (Horizontal == 1 && newDirection == FacedDirection.Right && platform.transform.position == new Vector3(centerposition.x, centerposition.y - 1, centerposition.z + 1))))) { transform.position = centerposition; _myFacedDirection = newDirection; degree = angle; return(true); } } return(false); }