我创建了9个克隆对象,并使用 OnMouseDrag 函数移动我的对象。
首先,我在区域区域拖动对象,然后单击左键将其放置在地图中。
void OnMouseDrag(){
if(placed==false && placedArmyCounter<3){
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z = 0f;
mousePos.x=Mathf.Round(mousePos.x);
mousePos.y=Mathf.Round(mousePos.y);
if( BoardManager.boardID==0 && mousePos.x>=0 && mousePos.x<=5 && mousePos.y>=0 && mousePos.y<=2){
transform.position=new Vector2((mousePos.x),(mousePos.y));
}
if( BoardManager.boardID==1 && mousePos.x>=0 && mousePos.x<=7 && mousePos.y>=0 && mousePos.y<=3){
transform.position=new Vector2((mousePos.x),(mousePos.y));
}
}
}
左键单击
if(Input.GetMouseButtonDown(1) )
{
RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint((Input.mousePosition)), -Vector2.up);
if(hit.collider != null)
{
GameObject target = hit.collider.gameObject;
if(target.tag=="infantry"){
target.GetComponent<playerArmyMove>().Place();
}
if(target.tag=="archer"){
target.GetComponent<playerArmyMove>().Place();
}
if(target.tag=="horseman"){
target.GetComponent<playerArmyMove>().Place();
}
}
}
放置功能
public void Place(){
if(checkPlace==true){
placed=false;
}
if(checkPlace==false){
placed=true;
placedArmyCounter+=1;
}
}
当放置为真时,对象无法再次移动并且放置了用于开始游戏的ArmmyController
顺便说一下,我只想在地图区域放置3个物体。
但如果我没有点击左键,则会出现问题,我可以在地图中添加很多对象。我不希望这样发生。
我知道我需要另一个控制器来检查&#34;地图区域中是否有任何对象并且是否放置&#34;但是如果我在 OnMouseDrag 函数中添加控制器,任何对象都可以不动。
有什么建议吗?
P.S:不要关心checkPlace布尔函数,它是关于检测碰撞。