iT邦幫忙

1

Unity2D橫向捲軸手機遊戲:StopPoint

  • 分享至 

  • xImage
  •  

最近重學到中後段才想起以前有用這個記錄過學習,虧麻ㄌ!先從目前的進度開始寫(不然好容易操作過但幾天後就忘)

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


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言