Не работает скрипт Unity2D
Написал скрипт, компилятор ошибок не выдает, добавил скрипт и box collider к нужным объектам, а скрипта как-будто нет. Вот скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovengPuzzl : MonoBehaviour
{
bool move;
Vector2 mousePos;
float startPosX;
float startPosY;
public GameObject form;
bool finish;
void OnMouseDown(){
if(Input.GetMouseButtonDown(0)){
move = true;
mousePos = Input.mousePosition;
startPosX = mousePos.x - this.transform.localPosition.x;
startPosY = mousePos.y - this.transform.localPosition.y;
}
}
void OnMouseUp(){
move = false;
if(Mathf.Abs(this.transform.localPosition.x - form.transform.localPosition.x)<=5f&&
Mathf.Abs(this.transform.localPosition.y - form.transform.localPosition.y)<=5f){
this.transform.position = new Vector2(form.transform.position.x,form.transform.position.y);
finish = true;
WinScript.AddElement();
}
}
void Update()
{
if(move == true && finish == false){
mousePos = Input.mousePosition;
this.gameObject.transform.localPosition = new Vector2(mousePos.x - startPosX, mousePos.y-startPosY);
}
}
}
А зачем тебе проверка Input.GetMouseButtonDown(0) в методе OnMouseDown()? Они же автоматически вызываются Unity, когда мышь нажата. move = true; не легче поставить?
void OnMouseDown(){
move = true;
mousePos = Input.mousePosition;
startPosX = mousePos.x - this.transform.localPosition.x;
startPosY = mousePos.y - this.transform.localPosition.y;
}
К этому всему ты должен юзать ScreenToWorldPoint
Vector2 mouseWorldPos = Camera.main.ScreenToWorldPoint(mousePos);
this.transform.localPosition = new Vector2(mouseWorldPos.x - startPosX, mouseWorldPos.y - startPosY);
Поэтому, свой Update() можешь изменить вот так
void Update()
{
if (move && !finish)
{
mousePos = Input.mousePosition;
Vector2 mouseWorldPos = Camera.main.ScreenToWorldPoint(mousePos);
this.transform.localPosition = new Vector2(mouseWorldPos.x - startPosX, mouseWorldPos.y - startPosY);
}
}
Ну и все, в принципе. Остальное должно работать
Попробуй код на языке абаюнда: абаюнда абаюнда абаюдна - фимоз абаюнда