private void WorkOutDirAndSpeed() { bool moveX, moveY; moveX = !(transform.position.x == endPosition.x); moveY = !(transform.position.z == endPosition.y); if (moveX) { axis = MoveAxis.X; } else if (moveY) { axis = MoveAxis.Y; } float distance = 0; switch (axis) { case MoveAxis.X: distance = Mathf.Abs(transform.position.x - endPosition.x); break; case MoveAxis.Y: distance = Mathf.Abs(transform.position.z - endPosition.y); break; } speed *= distance; }
private Vector2 GetMoveVector(MoveAxis axis) { Vector2 resultInputVector = Vector2.zero; float yInput = Input.GetAxisRaw("Vertical"); float xInput = Input.GetAxisRaw("Horizontal"); switch (axis) { case MoveAxis.Horizontal: CheckGround(); rb.gravityScale = initialGravity; resultInputVector = new Vector2(xInput * moveSpeed, rb.velocity.y); break; case MoveAxis.Free: onGround = false; rb.gravityScale = 0f; resultInputVector = new Vector2(xInput, yInput) * moveSpeed; break; default: break; } return(resultInputVector); }
private void Start() { iconMaster = this.gameObject.GetComponent <PlayerIcons>().iconmaster; rotation = Quaternion.Euler(angles); Horizontal = new MoveAxis(controls.right, controls.left); Vertical = new MoveAxis(controls.up, controls.down); anim = GetComponentInChildren <Animator>(); }
public static float GetAxis(MoveAxis moveAxis) { var value = moveAxis == MoveAxis.Horizontal ? _instance._moveJoystick.Horizontal : _instance._moveJoystick.Vertical; if (value == 0) { value = Input.GetAxis(moveAxis.ToString()); } return(value); }
/// <summary> Returns a unit vector representing the chosen movement axis. </summary> /// <param name="axis"></param> /// <returns></returns> public static Vector3 GetAxis(MoveAxis axis) { Vector3 res = Vector3.zero; int ax = (int)axis; if (ax > 2) { ax -= 3; } res[ax] = 1; return(res); }
public static Vector3 GetVector(MoveAxis axis) { Vector3 res = Vector3.zero; if (IsNegative(axis)) { res[(int)axis - 3] = -1; } else { res[(int)axis] = 1; } return(res); }
public static System.Tuple <Vector2, Vector2> SetMoveValues(MoveAxis moveAxis) { Vector2 positiveDir; Vector2 negativeDir; if (moveAxis == MoveAxis.X) { positiveDir = Vector2.right; negativeDir = Vector2.left; } else { positiveDir = Vector2.up; negativeDir = Vector2.down; } return(System.Tuple.Create(positiveDir, negativeDir)); }
public static int AxisIndex(MoveAxis axis) { return(IsNegative(axis) ? (int)axis - 3 : (int)axis); }
public static bool IsNegative(MoveAxis axis) { return(axis >= MoveAxis.NegativeX); }
public bool Move(float amount, MoveAxis axis, params IBodCollidable[] collidables) { bool maintainMomentum = true; if (amount == 0) { return(false); } Vector2 moveVector; if (axis == MoveAxis.H) { moveVector = Vector2.right; } else if (axis == MoveAxis.V) { moveVector = Vector2.up; } else { throw new System.Exception("Unknown MoveAxis " + axis); } int intAmount = Round(position.x + amount) - Round(position.x); if (intAmount == 0) { intAmount = amount < 0 ? -1 : 1; } while (intAmount != 0) { bool hit = false; for (int i = 0; i < collidables.Length; i++) { // if (collidables[i].HitRect(roundPosition + moveVector * intAmount, size) != null) { if (collidables[i].HitRect(Round(position + moveVector * amount), size) != null) { hit = true; break; } } if (hit) { maintainMomentum = false; if (intAmount > 0) { intAmount--; amount--; if (amount < 0) { amount = 0; } } if (intAmount < 0) { intAmount++; amount++; if (amount > 0) { amount = 0; } } } else { position += moveVector * amount; break; // done moving! } } if (!maintainMomentum) { if (axis == MoveAxis.H) { position = new Vector2(roundPosition.x, position.y); } if (axis == MoveAxis.V) { position = new Vector2(position.x, roundPosition.y); } } return(maintainMomentum); }