2020-10-24小記
專案場景:
貪吃蛇
問題描述(解決):
解決食物總是生成在邊界或者障礙上的問題
規定生成的邊界範圍,獲得每個障礙的長與寬,再次縮小範圍,進而達到目的
//生成不在障礙或者邊界上的座標
private Vector3 MakePosition()
{
int x = 0;
int y = 0;
bool isSuit = false;
while (isSuit == false)
{
isSuit = true;
x = Random.Range(-260, 500);
y = Random.Range(-262, 262);
for(int i = 0; i < barrierList.Count; i++)
{
if (barrierList[i].GetComponent<Image>().enabled)
{
int barrXMax = (int)(barrierList[i].localPosition.x + barrierList[i].GetComponent<RectTransform>().rect.width / 2.0f);
int barrXMin = (int)(barrierList[i].localPosition.x - barrierList[i].GetComponent<RectTransform>().rect.width / 2.0f);
int barrYMax = (int)(barrierList[i].localPosition.y + barrierList[i].GetComponent<RectTransform>().rect.height / 2.0f);
int barrYMin = (int)(barrierList[i].localPosition.y - barrierList[i].GetComponent<RectTransform>().rect.height / 2.0f);
if ((x <= barrXMax && x >= barrXMin) && (y <= barrYMax && y >= barrYMin)){
isSuit = false;
}
}
}
}
Vector3 pos = new Vector3(x, y, 0);
return pos;
}
原因分析:
範圍定位不準確,只用了粗略的估值
解決方案:
上述程式碼即為解決方案,獲得障礙的準確位置與大小範圍,排除掉其範圍內的座標,可避免食物生成在障礙上。
相關文章
- 2020-10-24
- 2020-10-24 目標還是AIAI
- 延安小記
- 小記 Demo
- java小記-Java
- Warmup小記
- node小記
- # self小記
- Cookie小記Cookie
- vue小記Vue
- webpack小記Web
- tmux 使用小記UX
- apifox使用小記API
- 小記2024.09.01—2024.10.15
- Less用法小記
- 博弈論小記
- git submodule小記Git
- java小記-scannerJava
- 數論小記
- sed命令小記
- 陣列小記陣列
- 分治FFT小記?FFT
- 面試小記面試
- Docker 建站小記Docker
- 遞迴小記遞迴
- Git命令小記Git
- JavaScript 小記錄JavaScript
- npm 小記錄NPM
- golang 切片小記Golang
- 小馬筆記筆記
- Java集合小記Java
- 2020-10-24 Intel Openvino安裝和跑demo遇到的一些坑Intel
- 微信小程式開發小記微信小程式
- 小程式專案之填坑小記
- 微信小遊戲開發小記遊戲開發
- uniapp小程式筆記APP筆記
- ArchLinux 安裝小記Linux
- 數位DP小記