unity 跑酷遊戲開發筆記

   跑酷遊戲製作筆記

2014.9.5

學了unity有一段時間了。想想也是要多鍛鍊自己的編程功夫了。開始想做rpg的遊戲。不過感覺應該耗時會有點久。現在時間又有點緊,想想就還是先做跑酷的吧。之後有時間在做rpg的遊戲。

跑酷類的我沒有看過相關的教程什麼的。所以不太清楚別人的是怎麼開發的。我現在也有一些開發的思路。大神們如果看到我的有什麼錯誤歡迎提出來。不過就不要噴我了。。我畢竟也是一個新手。就打算寫點東西留着,以後在碰到相關的也可以有個資料查詢下。

說了半天了。都沒有一點有用的。好吧。現在開始正式進入話題!



這是我先創建的一個場景。下面的是兩個cube主要我是拿cube當路了。畢竟自己不是美工。。自己做路比較費勁的。就請原諒哈。。。

好的。我這個人物是從網上下來的。網上有很多可愛的模型的。基本都可以用的。


我把創建場景帶的主攝像機放到這個模型裏了。也就是讓這個模型當這個相機的父類。

這麼做的原因是可以讓這個主攝像機一直跟隨角色運動。至於那些攝像機相關的腳本我還真的不太會。可能以後碰到相關的我在研究吧。

我做人物的方式和別人的有些不同。我現在也不清楚到底哪個方式好。有些人是給模型添加剛體和碰撞器之後同過rigidbody.velocity 這個給物體一個方向的力。但是我有時候用不好。之後看到一個方式。是給模型添加角色控制器(CharacterController),

我的模型下面添加的東西:


如圖:


**當你給模型添加好characterController 後物體是不會受重力影響的。也就是說物體會在空中無法落到你添加的cube上的。這個時候就要開始寫代碼了。

我屬性方面的聲明上我就是以後用的什麼在添加什麼了。第一次打算寫一個完整的遊戲。思路不太清晰的。。請各位見諒

 

#region 屬性

Private float speed = 3;//速度

public int TabRun ;//切換跑,衝刺,跳

   private Vector3 moveDirection = Vector3.zero;

   private int jumpSpeed = 3;//跳躍

   private float gravity = 10.0f;

private boolm_panduanjump = true;

public intdisplacement = 0;//左右位移

#endregion

Ps:#region ……#endregion這個可以把包圍在內的代碼縮小。看着也會整齊很多的。

  #region 對象

    public Transform m_transform; //自己的對象

    private CharacterController m_controller;//角色控制器

    private Animation m_animation;//動畫組件

    

    #endregion

    #region 動畫

    private string m_run = "run";//跑

    private string m_sprint ="sprint";//衝刺

    private string m_jump = "jump";//跳

    #endregion

動畫這裏我就先在最前面定義了。感覺這樣定義好了。以後用的時候看着也會很方便的。因爲感覺有時候網上下的資源,動畫的名字千奇百怪。。

Void Start(){

m_transform =this.transform;// 這裏先給transform賦值。聽說這樣會省資源

m_controller =GetComponent<CharacterController>();//獲取角色控制組件

        m_animation =GetComponent<Animation>();//獲取動畫組件

}

下面就是這個角色腳本的最主要的了。移動腳本

#region //角色移動

    /// <summary>

    /// TabRun 是整數類型 通過這個類型的值判斷是跑,衝刺還是跳。

    /// 這裏還會判斷左右位移

    /// </summary>

    void Move() {

        Vector3 m_forward =m_transform.TransformDirection(Vector3.forward);

        #region 判斷跑,衝刺,跳

        //判斷跑,衝刺,跳

        switch (TabRun) {

            case 1:

           m_animation.CrossFade(m_run);

           m_controller.SimpleMove(m_forward * speed);

            break;

            case 2:

           m_animation.CrossFade(m_sprint);

           m_controller.SimpleMove(m_forward * speed);

            break;

            case 3:

                

              

                if(m_controller.isGrounded)

                {

                    if(m_panduanjump)

                    {

                       moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0,Input.GetAxis("Vertical"));

                       //moveDirection = transform.TransformDirection(moveDirection);

                        //moveDirection *= speed;

                       moveDirection = m_forward * speed;

                       m_animation.CrossFade(m_jump);

                       moveDirection.y = jumpSpeed;

                        //m_controller.SimpleMove(m_forward * speed);

                       m_panduanjump = false;

                    }

                    else {

                        TabRun= 1;

                       m_panduanjump = true;

                    }

            }

             moveDirection.y-= gravity * Time.deltaTime;

            m_controller.Move(moveDirection * Time.deltaTime);

            break;

        }

        #endregion

        #region 判斷左右位移

        //判斷左右位移

        switch(displacement){

            case -1:

                if(displacement ==-1)

                {

                    m_transform.position=new Vector3(-0.83f,m_transform.position.y, m_transform.position.z);

                   displacement = 2;

                }

                break;

            case 0:

                if(displacement == 0) {

                    m_transform.position=new Vector3(0,m_transform.position.y,m_transform.position.z);

                   displacement = 2;

                }

                break;

            case 1:

                if(displacement == 1) {

                    m_transform.position=

newVector3(0.67f,m_transform.position.y,m_transform.position.z);

                }

                break;

        }

        #endregion

 

    }

    #endregion

第一天的做好了。明天開始做跑到的無限循環。。打算都做好了後。在看看網上的跑酷教程。看看自己有什麼不足的要改進的。
發佈了29 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章