Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private Vector3 offSet;
- [SerializeField] private float cellSize = 1;
- [SerializeField] private Vector3 roundPosition;
- [SerializeField] private Vector3 cursorPosition;
- private void Update()
- {
- cursorPosition = GetCursorPosition();
- if((Round(cursorPosition.z, cellSize) % 2) == 0)//Проверка на четность
- {
- roundPosition = new Vector3(RoundFloor(cursorPosition.x, cellSize), cursorPosition.y, Round(cursorPosition.z, cellSize));
- offSet = Vector3.right * 0.5f;
- }
- else
- {
- roundPosition = new Vector3(Round(cursorPosition.x, cellSize), cursorPosition.y, Round(cursorPosition.z, cellSize));
- offSet = Vector3.zero;
- }
- transform.position = roundPosition + offSet;
- }
- public Vector3 GetCursorPosition()
- {
- Vector3 mouse = Input.mousePosition;
- Ray castPoint = Camera.main.ScreenPointToRay(mouse);
- RaycastHit hit;
- if (Physics.Raycast(castPoint, out hit, Mathf.Infinity))
- {
- return hit.point;
- }
- return Vector3.zero;
- }
- private float Round(float position, float cellSize)
- {
- return Mathf.Round(position / cellSize) * cellSize;
- }
- private float RoundFloor(float position, float cellSize)
- {
- return Mathf.Floor(position / cellSize) * cellSize;
- }
Add Comment
Please, Sign In to add comment