// Update is called once per frame void Update() { if ((targetPosition - transform.position).magnitude > .01f) { transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime * MoveSpeed); } else { transform.position = targetPosition; RaycastHit hit; if (Physics.Raycast(transform.position, Vector3.down, out hit, 2)) { GridElement element = hit.transform.GetComponent <GridElement>(); if (element) { if (element.MyType == GridElementType.Empty) { element.SetAsTrail(); } } } GetNewTarget(); } if (InputManager.instance.ActiveInput != Direction.Nan) { RaycastHit hit; GridElement element; if (Physics.Raycast(transform.position, Vector3.down, out hit, 2)) { element = hit.transform.GetComponent <GridElement>(); if (element) { //element.transform.position += Vector3.up*3; if (element.MyType != GridElementType.ColorFilled) { if (moveDirection == Direction.Up && InputManager.instance.ActiveInput == Direction.Down) { InputManager.instance.ActiveInput = Direction.Nan; return; } if (moveDirection == Direction.Down && InputManager.instance.ActiveInput == Direction.Up) { InputManager.instance.ActiveInput = Direction.Nan; return; } if (moveDirection == Direction.Left && InputManager.instance.ActiveInput == Direction.Right) { InputManager.instance.ActiveInput = Direction.Nan; return; } if (moveDirection == Direction.Right && InputManager.instance.ActiveInput == Direction.Left) { InputManager.instance.ActiveInput = Direction.Nan; return; } } } } moveDirection = InputManager.instance.ActiveInput; InputManager.instance.ActiveInput = Direction.Nan; } }