Answer the question
In order to leave comments, you need to log in
Why does the script in the build in Unity not work?
I started to study the unit a couple of days ago according to the guide.
The script does not work in the build in the unit, despite the fact that everything works in the unit itself.
I'm making chess, and now the moves stopped working in the build
. What could be the problem?
googled and some had bugs in the code. But everything seems to be fine here
public class Rules : MonoBehaviour
{
DragAndDrop dad;
public Rules()
{
dad = new DragAndDrop();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
dad.Action();
}
}
class DragAndDrop
{
enum State
{
none,
drag
}
State state;
GameObject item;
public DragAndDrop()
{
state = State.none;
item = null;
}
public bool Action()
{
switch (state)
{
case State.none:
if (IsMouseButtonPressed())
PickUp();
break;
case State.drag:
if (IsMouseButtonPressed())
Drag();
else
Drop();
return true;
}
return false;
}
bool IsMouseButtonPressed()
{
return Input.GetMouseButton(0);
}
void PickUp()
{
Vector2 clickPosition = GetClickPosition();
Transform clickedItem = GetItemAt(clickPosition);
if (clickedItem == null) return;
item = clickedItem.gameObject;
state = State.drag;
Debug.Log("picked up: " + item.name);
}
Vector2 GetClickPosition()
{
return Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
Transform GetItemAt(Vector2 position)
{
RaycastHit2D[] figures = Physics2D.RaycastAll(position, position, 0.5f);
if (figures.Length == 0)
return null;
return figures[0].transform;
}
void Drag()
{
item.transform.position = GetClickPosition();
}
void Drop()
{
state = State.none;
item = null;
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question