<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                上一篇我們僅僅是創建了場景和主角,暫時不具備任何玩法。 這次,我們來看看怎么讓主角移動起來。 > 笨木頭花心貢獻,啥?花心?不,是用心。 > 轉載請注明,原文地址:[http://www.benmutou.com/archives/2131](http://www.benmutou.com/archives/2131) > 文章來源:[笨木頭與游戲開發](http://www.benmutou.com/blog/) ### 1.Update,又是Update 似乎[游戲開發](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%D3%CE%CF%B7%BF%AA%B7%A2&k0=%D3%CE%CF%B7%BF%AA%B7%A2&kdi0=0&luki=4&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0)里總是無法離開Update,我現在的工作不是游戲開發,沒法使用Update,導致我非常不習慣。 Update是什么?我們把游戲想象成一個大的while循環,每一次循環都會調用一次Update函數。 而我們就可以在Update函數里做一些亂七八糟的事情。 比如,每一次Update就讓角色的x坐標+1,于是,很多次Update的調用連起來之后,角色就在移動了。 總而言之,Update是我們經常會用到了,很重要的東西,這里不多解釋了。 ### 2.別急,先給BugPlayer上色 因為BugPlayer現在是白色,不方便演示,我們就先來給它上色吧。 在【Project】創建右鍵,依次點擊【Create】->【Material】,命名為PlayerMaterial。 這樣就創建了一個材質,接著修改材質的顏色,然后把材質拖到BugPlayer身上,如: ![u006_3.gif](https://box.kancloud.cn/2016-06-06_575541ae993c9.gif) 由于我在錄制Gif之前就已經把材質拖到BugPlayer身上了,所以這一步我就沒演示了,和拖腳本是一毛一樣的。 ### 3.前后移動 OK,要開始移動了,跟緊了。 打開BugPlayerLogic腳本,修改Update[函數](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%BA%AF%CA%FD&k0=%BA%AF%CA%FD&kdi0=0&luki=5&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0),現在腳本的內容應該是這樣的: 1. ~~~ public?class?BugPlayerLogic?:?MonoBehaviour?{? ??void?Start?()?{?}? ?? ??void?Update?()? ??{? ? ? ??if?(Input.GetAxis("Vertical")?!=?0)? ? ? ??{? ? ? ? ? ??this.gameObject.transform.position?+=?this.gameObject.transform.forward?*?Input.GetAxis("Vertical");? ? ? ??}? ??}} ~~~ Input類用于獲取各種輸入,包括鍵盤、鼠標等。 而Input.GetAxis(“Vertical”)代表獲取垂直方向上的輸入,在電腦上就是W和S鍵,分別代表正負方向。 下面一一解釋: A. this.gameObject 我們要注意了,BugPlayerLogic是一個腳本,它是BugPlayer身上的一個組件,并不是BugPlayer本身。 所以,我們要通過this.gameObject來獲取當前腳本所屬的obj對象。 理論上來說,一個組件只能有一個GameObject,但由于我是[新手](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%D0%C2%CA%D6&k0=%D0%C2%CA%D6&kdi0=0&luki=1&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0),所以,不敢亂說。 B. transform GameObject的transform是什么呢?這個最簡單了,就是obj對象的位置屬性,包括坐標、旋轉角度、縮放。 C. transform.position 既然transform包括坐標屬性,position自然就是它的坐標屬性了。 那么,this.[game](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=game&k0=game&kdi0=0&luki=3&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0)Object.transform.position += XXX; 又是什么鬼? 這代表給坐標加上一個坐標,比如我當前坐標是(10,0),加上(1,0)就變成了(11,0)了。 當然,由于這是3D坐標,實際上是有X、Y、Z的。 (Z:特么的我終于不用被忽略了) (小若:不,它舉例的時候還是特意的完全把你忽略了。) 特么的,我是“他”,不是“它”! D. transform.forward 這個forward又是什么呢?顧名思義,它是物體的正方向、正前方。 物體的正前方就是它的Z軸的方向,當我們希望物體忘正前方移動的時候,當然就是要加上正前方的坐標了。 而this.[game](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=game&k0=game&kdi0=0&luki=3&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0)Object.transform.forward *?Input.GetAxis(“Vertical”),就是讓這個正前方的位移更大一些(根據輸入的值來變化)。 關于坐標,應該也是需要研究一番的,我目前還沒很熟悉,所以,不多了,免得誤導了大家。 OK,總而言之,你記住,向前和向后移動,就是上面那一句代碼。 來看看效果: ![u006_4.gif](https://box.kancloud.cn/2016-06-06_575541aed7262.gif) 大家實際上可能會發現,按w鍵的時候,它往后移動了,這是因為我們的攝像機正對著BugPlayer的正方向了。 停止運行[游戲](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%D3%CE%CF%B7&k0=%D3%CE%CF%B7&kdi0=0&luki=2&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0),把BugPlay旋轉一下: ![u006_5.gif](https://box.kancloud.cn/2016-06-06_575541aeee3fb.gif) 按下快捷鍵E就可以進入到旋轉模式(或者點擊左上方的旋轉按鈕),我們要繞著Y軸旋轉,所以要按住綠色的那條圈,然后拖動鼠標。 大家自己嘗試吧,習慣就好了。 ### 4.左右旋轉 特么的主角當然不能只會前進后退了,還得左右轉向。 這個更簡單,打開BugPlayerLogic腳本,繼續修改Update[函數](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%BA%AF%CA%FD&k0=%BA%AF%CA%FD&kdi0=0&luki=5&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0): 1. ~~~ ??void?Update?()? ??{? ? ? ??/* 旋轉鏡頭 */? ? ? ??if?(Input.GetAxis("Horizontal")?!=?0)? ? ? ??{? ? ? ? ? ? transform.Rotate(new?Vector3(0, Input.GetAxis("Horizontal"),?0));? ? ? ??}? ? ? ??if?(Input.GetAxis("Vertical")?!=?0)? ? ? ??{? ? ? ? ? ? //this.gameObject.transform.position?+=?this.gameObject.transform.forward?*?Input.GetAxis("Vertical")?*?10?*?Time.deltaTime;? ? ? ? ? ??this.gameObject.transform.position?+=?this.gameObject.transform.forward?*?Input.GetAxis("Vertical");? ? ? ??}? ??} ~~~ 既然Input.GetAxis(“Vertical”)是獲取垂直方向上的輸入,那么,Input.GetAxis(“Horizontal”)自然就是獲取水平方向的輸入了。 在選中BugPlayer的時候,我們就能看到它的三個方向的箭頭: ![](https://box.kancloud.cn/2016-06-06_575541af32044.jpg) 看看箭頭的顏色,再對比右上角的XXX(小若:XXX是什么鬼啊?) 我不知道右上角的那個XXX叫什么名字,叫做方向圖例?隨便吧。 總之,看看不同顏色的箭頭,分別標注了X、Y等文字,代表這個顏色的箭頭是哪個方向的。(Z:別煩我,我想靜靜地思考一下…特么的我就這么讓作者討厭?) 很明顯,BugPlayer的垂直方向是Y軸,如果我們要旋轉BugPlayer,是不是應該繞著Y軸旋轉? 千萬不要告訴我,因為是水平方向的旋轉,所以要繞著X軸或者Z軸什么的,我不想和你們說話。 于是,代碼中的tranform.rotate就是用來旋轉物體的,而Vector3代表的是三維坐標,由于只需要旋轉Y軸,所以X和Z的值都是0. OK,運行[游戲](http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=a5cc34bc97dc9175&k=%D3%CE%CF%B7&k0=%D3%CE%CF%B7&kdi0=0&luki=2&n=10&p=baidu&q=25013069_cpr&rb=0&rs=1&seller_id=1&sid=7591dc97bc34cca5&ssp2=1&stid=0&t=tpclicked3_hc&td=1682305&tu=u1682305&u=http%3A%2F%2Fwww%2Ebenmutou%2Ecom%2Farchives%2F2131&urlid=0),看看效果: ![u006_6.gif](https://box.kancloud.cn/2016-06-06_575541af4df50.gif) 不好意思,這車倒得有點歪了,沒關系…車位挺多的… ### 5.待續 好了,本篇到此結束。 下一篇,我們來玩些什么呢,要不,我們開始在場景里設置一些奇怪的東西吧? 本篇源碼:[Unity_benmutou_007](http://www.benmutou.com/wp-content/uploads/2015/11/Unity_benmutou_007.7z)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看