最近重學到中後段才想起以前有用這個記錄過學習,虧麻ㄌ!先從目前的進度開始寫(不然好容易操作過但幾天後就忘)
StopPoint作用:讓敵人巡邏遇到玩家時,追到特定座標就停下(以免發生bug)
建立空物件設置BoxCollider2D並tag: StopPoint,勾選isTrigger,並將女殭屍設置Rigidbody2D
(這樣才可以使用OnTriggerEnter2D語法),並把BodyType設為:Kinematic(避免受到重力影響)
由於女殭屍腳本是繼承男殭屍的程式碼,所以在男殭屍的腳本先把OnTriggerEnter2D設成protected virtual,
再到女殭屍腳本撰寫 protected override引用
protected override void OnTriggerEnter2D(Collider2D collision)
{
base.OnTriggerEnter2D(collision);//基於男殭屍的腳本邏輯
if(collision.tag=="StopPoint")//如果碰到StopPoint戰鬥模式關閉
{
isBattleMode=false;
}
if(collision.tag=="PlayerAttack")//受到玩家攻擊戰鬥模式就開啟
{
isBattleMode=true;
}
}
由於戰鬥模式會關閉所以要另外寫一段正常巡邏模式的程式碼
else
{
if (transform.position.x > turnPoint.x)//如果當前位置大於轉向點那殭屍就面朝左
{
transform.localScale = new Vector3(-1.0f, 1.0f, 1.0f);
}
else//否則殭屍就面朝右
{
transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
}
if (Anim.GetCurrentAnimatorStateInfo(0).IsName("walk"))//當進入到走路動畫時才開始巡邏
{
transform.position = Vector3.MoveTowards(transform.position,turnPoint, runSpeed * Time.deltaTime);
}
if (transform.position == turnPoint)
//如果當前位置在轉向點,戰鬥模式開啟(以防碰過StopPoint之後就不會進入BattleMode了)
{
isBattleMode = true;
}
return;//讓BattleMode=false時只會執行這邊的程式碼
}
要避免殭屍巡邏的目標點讓殭屍的BoxCollider與StopPoint的Collider重疊不然會有bug