Unity筆記:2D戰略沙盒角色相機完美控制。
2020/7/14
Day1000
第一千天的上午,
來把相機給完善一下,
之前只會跟著角色太單調了,
玩家也很想要直接往角色以外的地方看敵人的城鎮在做什麼,
做出來也才有那種沙盒觀察的感覺。
(つд⊂)
實現項目如下:
-----------------------
1.相機跟隨角色
*當角色移動時,相機僅跟隨角色而不自由移動,
而開新遊戲或讀檔也要記得在載入完資料後設定一下位置。
相機跟隨角色();
cam.transform.position = player.transform.position + new Vector3(0, 0, -10);
更新左上位置狀態資訊();
//相機跟隨角色一樣的東西
-----------------------
2.相機自由移動
*當相機沒有其他工作時,
滑鼠靠近螢幕邊緣自動移動相機。
if (是否移動單位 == false)
{
float 相機移動速度 = (float)相機大小 / (float)100;
if (Input.mousePosition.y + 10 > Screen.height)
cam.transform.position += new Vector3(0, 相機移動速度, 0);
else if (Input.mousePosition.y - 10 < 0)
cam.transform.position -= new Vector3(0, 相機移動速度, 0);
if (Input.mousePosition.x + 10 > Screen.width)
cam.transform.position += new Vector3(相機移動速度, 0, 0);
else if (Input.mousePosition.x - 10 < 0)
cam.transform.position -= new Vector3(相機移動速度, 0, 0);
}
-----------------------
3.相機鏡頭縮放
*通過按鈕和滾輪來縮放相機。
if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
相機縮小();
播放按鈕音效();
}
else if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
相機放大();
播放按鈕音效();
}
public const int 相機標準值 = 7;
public void 相機縮小()
{
int 大變化值 = 20;
if (相機大小 <= 相機標準值)
{
相機大小 -= 1;
}
else
{
相機大小 -= 大變化值;
if (相機大小 < 相機標準值)
{
相機大小 = 相機標準值;
}
}
if(相機大小 < 1)
{
相機大小 = 1;
}
cam.orthographicSize = 相機大小;
相機跟隨角色();
}
public void 相機放大 ()
{
int 大變化值 = 20;
long 相機大小上限 = 40 + 玩家.神力等級();
if (相機大小 < 相機大小上限)
{
if (相機大小 < 相機標準值)
{
相機大小 += 1;
}
else
{
相機大小 += 大變化值;
更新所有單位狀態UI();
}
cam.orthographicSize = 相機大小;
}
else
{
string 相機大小上限描述 = "(" + 相機大小 + "/" + 相機大小上限 + ")";
新增左上日誌文字
(
"Need a higher level to increase vision scale!" + 相機大小上限描述 + "\n",
"需要更高的等級來增加視野範圍!" + 相機大小上限描述 + "\n"
);
開啟左上UI();
}
相機跟隨角色();
}
-----------------------
4.相機移動速度受鏡頭大小影響
*相機鏡頭愈大,移動速度愈快。
上面自由移動的部分就直接套用了鏡頭大小。
-----------------------
5.相機回到角色
*一個簡單的Home鍵。
其實就是相機跟隨角色。
-----------------------
比想像中簡單多了,
還好我有做一下,
做完效果很不錯,
CP值高的工作量感覺真好!
(〃∀〃)ゞ
訂閱:
張貼留言 (Atom)
另外有一個直觀的操作是鏡頭向滾時自動往縮放的位置移動,
回覆刪除這個在許多地圖的程式上都會用到,
可以把縮放到位置的範圍跟鏡頭的大小作關聯,
另外這個功能通常只有"縮"才會用到,
實裝好之後鏡頭的位移加上滾輪縮放會方便很多。
(向內滾)
刪除