日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发日志 5-18

發布時間:2024/9/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发日志 5-18 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?  Be honest rather clever.

????? ...........? * *? *...................... *? *? *....................................

?????

??????1)?解決問題:

?  (1)碰撞:

?????? 設想:如果能夠分清,人物和碰撞物體之間的方向關系就可以解決。比如人物向左運動,碰到了一個物體,停下來,轉換動作,兩個范圍框交叉在了一起。然后如果人物繼續朝著障礙物的方向運動,當然會碰撞。如果是朝相反的方向,就不檢測碰撞。這樣就不會黏在一起了。

   以前為了解決物體的左右翻轉這個問題,曾經設計了一個布爾型的變量 facing,現在或許可以讓他繼續起作用。這么做存在一個問題:在游戲系統中,左右(東西)是一個絕對值(absolute),而facing是根據游戲人物的原始圖是面向左還是面向右的,是一個相對值(relative)。這里需要引入一個新的值來表示人物前行的方向,上下(南北)被忽略了,只有向左向右(或者說向東向西)。如果所有的圖片的朝向都是一樣的,這當然是最好了;但如果不是,那么就需要自定義了。

  更深入一些,不但需要了解碰撞的發生,而且需要了解碰撞的方向,這在踩蟲子的游戲中很常見,從上面“踩”中蟲子會把蟲子踩死,但如果你“碰”上了蟲子,那么只好安息了。這里的踩,實際上是玩家對蟲子的碰撞方向為自上而下,碰撞面為底邊,而對于蟲子,這次碰撞是自下而上的(相當于跳躍),碰撞面為上邊。

?  這里我需要提醒一句:實際上游戲的過程并不是連續的,并非一個像素一個像素的移動,所以有可能產生,上一個時刻兩個物體尚未發生碰撞,下一個時刻,兩個物體已經碰撞過來而且分開了,那么檢測仍然認為他們沒有碰撞,這就是一個Bug,而且這個Bug還不容易尋找,這在物體步進速度很大,而且物體較小的時候有可能發生;還有一種可能就是下一個時刻,一個物體正好嵌進另一個物體里面了,稍不注意,會造成很奇怪的結果。繼續討論下去,會發現,碰撞還有一個前檢測碰撞和后檢測碰撞,前者是檢測下一時刻會不會發生碰撞,后者是檢測這一時刻是不是發生了碰撞。后者有可能發生陷到墻里面的情況,原因就是前面提到的游戲過程不是連續的。在這個游戲中,采取的是后檢測的方法。???

?????? 修改碰撞函數bool[] CheckBump(),在碰撞發生后返回一個bool[],【0】:是否發生碰撞【1】:碰撞在左邊/右邊發生 【2】:碰撞在上邊/下邊發生,這樣在檢測碰撞的時候,同時檢測碰撞發生在那一邊上和游戲人物前進的方向,發生了碰撞,而且前進的方向和障礙物所處位置一致,則真正發生碰撞反應(比如速度為零)。???

?????? (2)測試:

   原來以為,一個人物運動以后,另一個人物的速度總為零,是因為鍵盤KeyUp后恢復 idle引起的,經過試驗,注釋掉這條語句,發現仍然這樣,可見這個問題還有更深的原因。

?????? (3)思考:

   現在采取的數據存儲方式,是在處理邏輯的模板類中,放了一個 靜態的 List<>,在這里存放著一個個同模板的游戲人物數據,這么做雖然麻煩,但避免了裝箱拆箱。但在實驗的過程中,發現裝拆箱的代價似乎沒有那么高。有沒有必要改進一下目前的做法呢?

轉載于:https://www.cnblogs.com/GameCode/articles/1738236.html

總結

以上是生活随笔為你收集整理的开发日志 5-18的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。