【发布时间】:2020-04-16 07:03:12
【问题描述】:
我想画一个有网格的游戏板我已经尝试过将游戏板宽度居中为总宽度的 80%,高度为总高度的 60%,但它仍然不兼容行和列的所有值查看代码并帮助我
private void SetupGrid()
{
float height=Camera.main.orthographicSize*2f;
float width=Camera.main.aspect*height;
Debug.Log("height:"+height);
Debug.Log("width:"+width);
float possibleHeight=0.6f*height;
float possibleWidth=0.8f*width;
Debug.Log("possibleHeight:"+possibleHeight);
Debug.Log("possibleWidth:"+possibleWidth);
float eachcellWidth=possibleWidth/mWidth;
float eachcellHeight=possibleHeight/mHeight;
Debug.Log("eachcellWidth:"+eachcellWidth);
Debug.Log("eachcellHeight:"+eachcellHeight);
float cellCenterX=eachcellWidth/2;
float cellCenterY=eachcellHeight/2;
Debug.Log("cellCenterX:"+cellCenterX);
Debug.Log("cellCenterY:"+cellCenterY);
float offSetBetweenEachCell=eachcellWidth*0.15f;
float startXpos=-(mWidth/2*eachcellWidth)+cellCenterX;
float startYpos=-(mHeight/2*eachcellHeight)+cellCenterY;
Debug.Log("start X position value:"+startXpos);
Debug.Log("start Y position value:"+startYpos);
SpriteRenderer spriteRenderer=mTilePrefab.GetComponent<SpriteRenderer>();
float actualSpriteWidth=spriteRenderer.sprite.bounds.size.x;
float actualSpriteHeight=spriteRenderer.sprite.bounds.size.y;
Debug.Log("Actual Sprite width:"+actualSpriteWidth);
Debug.Log("Actual Sprite Height:"+actualSpriteHeight);
float finalCellWidth=eachcellWidth-offSetBetweenEachCell;
float finalCellHeight=eachcellHeight-offSetBetweenEachCell;
Vector3 eachCellScaleUnit=new Vector3(finalCellWidth/actualSpriteWidth,finalCellHeight/actualSpriteHeight);
Vector3 referenceVector=Vector3.one;
GameObject cell=null;
for(int i=0;i<mWidth;i++)
{
for(int j=0;j<mHeight;j++)
{
float posX=startXpos+(j*eachcellWidth);
float posY=startYpos+(i*eachcellHeight);
referenceVector.x=posX;
referenceVector.y=posY;
cell=Instantiate(mTilePrefab,referenceVector,Quaternion.identity);
cell.transform.localScale=eachCellScaleUnit;
}
}
}
【问题讨论】:
标签: c# unity3d game-development