public void Running(Vector2 target, float input) { Vector2 position = transform.position; RaycastHit2D hit = Physics2D.Raycast(position, actions.ForwardMovementDirection, RunLookout, LayerMask.GetMask("Floor")); float rlookout = hit.collider == null ? RunLookout : hit.distance; hit = Physics2D.Raycast(position, -actions.ForwardMovementDirection, RunLookout, LayerMask.GetMask("Floor")); float llookout = hit.collider == null ? RunLookout : hit.distance; Vector2 right = position + actions.ForwardMovementDirection * rlookout; Vector2 left = position - actions.ForwardMovementDirection * llookout; if ((target - right).magnitude > (target - left).magnitude) { actions.Run(input); } else { actions.Run(-input); } }
void FixedUpdate() { float run = Input.GetAxis("Horizontal"); float jump = Input.GetAxis("Jump"); float shock = Input.GetAxis("Fire1"); if (jump != 0) { actions.JumpTowards(actions.UpVector); } if (run != 0f) { actions.Run(run); } if (shock != 0f) { actions.Shock(); } }