На прошлой неделе я разрабатывал блочную скользящую игру. где вы должны сдвинуть блок игрока, чтобы выйти из сетки, но для этого вам нужно переместить блок препятствий по горизонтали или вертикали, зависит от блока
я хотел сделать это с помощью raycast, потому что яразрабатывал его с помощью простой onmouse Drag n 'drop, но недостаток в том, что моя мышь внезапно схватила другой блок на моей позиции мыши, когда я захватывал блок.
void Start()
{
BlockRB = gameObject.GetComponent<Rigidbody2D>();
BlockCollider = gameObject.GetComponent<BoxCollider2D>();
}
// Update is called once per frame
void Update()
{
GrabABlock();
}
public void HorizontalMovement() {
//this.gameObject.transform.position = new Vector3(mousePos.x, gameObject.transform.position.y, 0);
BlockRB.transform.position = new Vector3(GrabPoint.transform.position.x, gameObject.transform.position.y, 0);
}
public void VerticalMovement()
{
//this.gameObject.transform.position = new Vector3(gameObject.transform.position.x, mousePos.y, 0);
BlockRB.transform.position = new Vector3(gameObject.transform.position.x, GrabPoint.transform.position.y, 0);
}
public void OctaMovement()
{
this.gameObject.transform.position = new Vector3(mousePos.x, mousePos.y, 0);
}
private void GrabABlock()
{
if (Grabbed == true) {
Vector3 CursorPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 MousePos2D = new Vector2(CursorPos.x, CursorPos.y);
RaycastHit2D Grab = Physics2D.Raycast(MousePos2D, gameObject.transform.position);
if (Grab.collider != null)
{
Debug.Log("You Grabbed A Block");
switch (BlockDirection)
{
case BlockShape.Horizontal:
//HorizontalMovement();
BlockRB.transform.position = new Vector3(gameObject.transform.position.x, Grab.transform.position.y, 0);
break;
case BlockShape.Vertical:
BlockRB.transform.position = new Vector3(gameObject.transform.position.x, Grab.transform.position.y, 0);
//VerticalMovement();
break;
case BlockShape.Square:
OctaMovement();
break;
}
}
}
}
private void OnMouseOver()
{
if (Input.GetMouseButton(0))
{
Grabbed = true;
}
else if (Input.GetMouseButtonUp(0))
{
Grabbed = false;
}
}
}
теперь проблема в том, что блок может'Я могу захватить блок только немного. я что-то упустил?