Blender遊戲引擎的 Python 腳本

2020-12-05 blender幫

您將學習如何在 Blender 中使用 Python 腳本

用腳本調整車輛移動,加速,停車。請記住,汽車只是用作使用 Python 的示例。本教程將教您 Blender 遊戲引擎的 Python 腳本基礎知識,包括通過腳本訪問和更改邏輯信息。即使您對 Python 有所了解,本教程也很容易理解。

1使用腳本

讓我們真正的遊戲腳本。如下所示:

import bgecont = bge.logic.getCurrentController()own = cont.owner

看看這三行。它們幾乎處於每個遊戲腳本的頂部,並且可能是任何攪拌機遊戲腳本的三行最重要的代碼行。

首先,我將解釋第二行,cont= bge.logic.getCurrentController()

get()當前控制器有哪些功能。那麼,在這裡,我們剛剛添加了一行,訪問控制器,並將該信息分配給變量cont。變量名可以任意,但它通常是一個縮寫,例如 cont,我們只使用它,因此我們不必每次都寫bge.logic.ge t控制器。用變量來代替。

2.添加更多邏輯代碼

刪除時鐘傳感器並添加兩個鍵盤傳感器,一個用於上鍵,另一個用於下鍵。將這些傳感器重命名為"向上"和"向下"。名稱很重要,因為我們將在 python 腳本中按名稱調用這些傳感器。對於"up"傳感器,還啟用"Tap"選項,以便此傳感器僅在您按下該鍵時註冊一次,否則,在釋放密鑰時,它也會再次註冊。點擊可確保傳感器僅觸發一次。將這兩個傳感器連接到 python 控制器,以便當按下其中任一按鈕時運行 python 腳本。現在還添加一個運動執行器並將其連接到控制器。將執行器重命名為"移動"。按下向上按鈕時,我們將使用此執行器移動我們的汽車。

import bgecont = bge.logic.getCurrentController()own = cont.ownermove = cont.actuators["move"]pressup = cont.sensors["up"]pressdown = cont.sensors["down"]speed = move.dLoc[1]

將從執行器列表中訪問名為"move"的執行器。如果在括號內未定義任何操作,則連接到 python 控制器的所有執行器將放入此列表中。但在這種情況下,我們只是調用一個名為"move"。

這些訪問傳感器"向上"和"向下",以便我們可以檢測按下哪些鍵,使腳本對每個事件執行一些不同的操作。

現在看看最後一行,speed= move.dLoc[1]。在這裡,我們深入到移動執行器。移動執行器是一個運動執行器。在這種情況下,我們正在訪問dLoc欄位,因為這是我們移動車輛的原因。dLoc欄位實際上是 X、Y 和 Z 值的列表。我們希望在 Y 軸上移動車輛,因此我調用 dLoc 列表的第二個值。如果您想知道為什麼我鍵入 [1] 來調用列表中的第二個值,請記下列表項從 0 開始,因此調用 move.dLoc{1} 是調用該列表中的第二個項。如果我想要第一個值 X 值,我會把它寫為move.dLoc{0}。因此,簡言之,使用這行代碼,我們的可變速度現在將等於運行腳本時的任何 Y 值。

現在,我們已經聲明了所有變量,我們將添加幾個語句,以確定是否按下向上或向下,然後讓兩個鍵觸發不同的東西。簡言之,這就是我們想要發生的事情。每當玩家按下時,運動執行器中的 Y 值都會增加 0.05,每次按鍵都會增加速度。每當玩家按下時,Y 值將重置為 0,使汽車停止。

我們將從定義按下時會發生什麼開始。因此,在速度變量下方添加行,以便腳本如下所示:

import bgecont = bge.logic.getCurrentController()own = cont.ownermove = cont.actuators["move"]pressup = cont.sensors["up"]pressdown = cont.sensors["down"]speed = move.dLoc[1]if pressup.positive: speed = speed + 0.05 move.dLoc = [0.0, speed, 0.0] cont.activate(move)

如果語句用於檢測是否按下了 up 按鈕。if 語句的末尾需要冒號,並且此語句的任何操作部分都需要在它下面選項卡。現在,如果玩家按下,0.05 將添加到當前任何速度值中,並且此速度值將插入移動執行器。dLoc是我們想要更改的運動執行器中的欄位。如果要更改執行器中的其他欄位,要找出可用的選項,可以使用列印dir(移動)。因此,現在我們只需將速度變量插入列表中的 Y 值,它將更改執行器中的值。若要使此執行器立即激活,我們使用線路cont.activate(移動)。現在我們的車開得更快了。

現在,我們將定義按下時會發生什麼。因此,在底部添加行,以便腳本如下所示:

import bgecont = bge.logic.getCurrentController()own = cont.ownermove = cont.actuators["move"]pressup = cont.sensors["up"]pressdown = cont.sensors["down"]speed = move.dLoc[1]if pressup.positive: speed = speed + 0.05 move.dLoc = [0.0, speed, 0.0] cont.activate(move)elif pressdown.positive: speed = 0 cont.deactivate(move) move.dLoc = [0.0, 0.0, 0.0]

因此,如果玩家按下而不是向上,我們將速度值設置為0,停用停止汽車的移動執行器,最後我們將dLoc欄位中的 Y 值重置回 0。

3玩遊戲!

您的腳本已完成!開始遊戲!現在反覆按上以獲得速度,然後按下向下鍵停止。

在本教程中,我們實際上並沒有使用自己的變量。但是,作為一個快速示例,如果您為對象創建了一個名為"health"的屬性,則可以通過這樣調用它來讀取或更改 Python 中的此值。

相關焦點

  • 淺談blender2.8 python 腳本相對之前版本的變化
    因blender2.8版本後的python腳本有更多的小變化,如重命名的面板,屬性,運算符等。內容太多下面沒有辦法列表出來,先說一部分我親自遇到的例子。hasattr() 函數用於判斷blender對象是否包含對應的屬性,用這個作為條件分別運行2.7和2.8的代碼空物體大小:obj.empty_draw_size 變更成 obj.empty_display_size空物體類型:obj.empty_draw_type 變更成 obj.empty_display_type
  • blender python處理矩陣乘法變更符號
    用blender腳本編寫器編寫任何矩陣乘法,乘法* 語法仍然有效,這個只能作為 2.8 中嘗試普通乘法,而不是 2.7 中的矩陣乘法。如果你用在矩陣乘法會報出有趣的錯誤,因為這並不一定會拋出一個錯誤,a * ba @ b想要支持 2.7 和 2.8 的相同矩陣乘法樣式?首先,這似乎是一個類似的挑戰,採用前面幾節中提到的欄位注釋。
  • 用Python寫3A?Cygames的遊戲引擎做得怎麼樣
    使用Cyllista Game Engine開發的3Ayx這個引擎的目標,是用「簡單的腳本語言寫3A根據演講者的說法,這將是一個「讓開發者的效率發揮到極限,最棒的遊戲引擎」。所以在大型遊戲製作的工作當中,Python基本上只是輔助工具,幫助完成測試。操作遊戲引擎的常見代碼,一般還是需要用C++、C#這種編譯型語言編寫。採用Python作為程式語言的遊戲引擎Pygame,主要服務的對象,也是對延遲要求不高的2D遊戲。
  • 5個支持python的2D、3D遊戲開發庫!
    1.Panda3D:Panda3D是由迪士尼開發的 3D 遊戲引擎,一個用於Python和C+程序的3D渲染和遊戲開發框架,並由卡內基梅隴娛樂技術中心負責維護。使用C++編寫, 針對 Python 進行了完全的封裝。
  • Python開發:Win10創建定時任務執行Python腳本
    來源: 小小追 舉報   日常開發過程中,可能需要再特定時間段執行我們編寫的Python腳本
  • Python 腳本案例:為流域插值雨量計
    我們不僅更新完善了諸多功能,最重要的是加入了Python 腳本。什麼是Python?Python是一種解釋型腳本語言。(摘自:百度百科 https://baike.baidu.com/item/Python/407313)PCSWMM 7.2 版本的最大亮點在於支持Python 腳本工具。
  • 遊戲開發5個階段學習路線給你準備好了!(含引擎/書籍資源)
    一、前言首先我們要知曉遊戲開發主要分為2D遊戲和3D遊戲。2D遊戲通常是為手機開發,3D遊戲一般使用的遊戲開發工具。二、平臺、遊戲引擎遊戲開發的平臺就有很多類型:個人主機平臺:Windows、Linux、Mac OC;移動平臺:iOS、Android、Windows Phone、BlackBerryOS、Symbian;專業主機平臺:Xbox、PlayStation、Will等無論你選擇哪個平臺,遊戲開發這個浩大的工程都離不開遊戲引擎,所以在這裡介紹一下現在流行的遊戲引擎
  • 宋寶華:一個簡單的python腳本畫出Linux程序/庫依賴圖
    繼《宋寶華:一個簡單的python腳本看透Linux程序對庫的依賴》之後,作為一個python的初級用戶,學習和實踐python的步伐根本就不下來!在下再接再厲,晚上繼續寫了一個python腳本,這個腳本完成的功能似乎比前面的分析函數依賴要cool一些,譬如執行.
  • python3腳本篇1-串口通訊腳本
    前言本文我們來學習Python軟體包pyserial的使用,硬體採用wemos D1開發板,直接燒錄串口章節代碼即可,本文主要編寫PC端Python腳本,完成腳本和外接串口設備通訊的功能。一、基礎知識1.pyserial簡介:pyserial模塊是python和串口設備通訊的package,串口是計算機上比較通用的通訊協議,串口設備通過USB插入電腦,python通過pyserial模塊就可以完成和串口設備的通訊,
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    話說在金融和IT行當混跡了多年,python一直是被我隨手拿來當個小工具用用,有時候偷懶用python弄個excel自動化整理工具,有時候拿來上各種網站爬蟲搜集點信息,有時候也會拿來寫點量化小工具。那麼到底什麼是python?
  • 腳本輔助對網路遊戲的影響
    玩家在遊戲中的每個腳印都是自己踩下的,雖然很浪費時間,但是卻有無窮的樂趣。能看到自己角色的每一個技能,能看到自己每一個屬性的增長,能看到背包金錢的豐富。而腳本的出現,卻毀了一切的一切。爾後,各個遊戲廠家加大對遊戲的安全性開發,基本黑不了遊戲內部文件了,於是,腳本就誕生了。腳本就是記錄FB每個怪物的坐標,根據遊戲內部的快捷鍵鎖定攻擊對象,完成FB。每天所需日常的坐標,自動完成日常。自動攻擊怪物達到刷怪目的。自動打寶圖,自動跑鏢。又因為腳本是輔助性外部文件,很多廠家很難檢測出來,檢測出來又不好封號。記得最猖獗的時候,騰訊TP如果檢測後臺有按鍵精靈直接封號3天。
  • 如何開始寫你的第一個python腳本——簡單爬蟲入門!
    好多朋友在入門python的時候都是以爬蟲入手,而網絡爬蟲是近幾年比較流行的概念,特別是在大數據分析熱門起來以後,學習網絡爬蟲的人越來越多,哦對,現在叫數據挖掘了!其實,一般的爬蟲具有2個功能:取數據和存數據!好像說了句廢話。。。
  • python sys模塊的常見用法匯總
    版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。 獲取命令行參數sys.argv是一個列表, 該列表存儲了命令行參數,當採用腳本方式運行時,可以方便的處理命令行參數。假設一個python腳本名為test.py,其中的內容如下import sys
  • windows上python開發環境的搭建
    首先來下載python解釋器,在python官網下載即可,連結如下https://www.python.org/downloads/當前最新版本為v3.8.2, 可以進入python的交互式運行窗口至此,python已經安裝成功。
  • 使用腳本繪製吸附勢能面
    其實手動撒點,再採集數據也是可行的,但是會比較麻煩,因此作者根據實際需要開發了一款腳本scan_adsorption_energy用於自動完成這個過程。腳本使用Python編寫,需要numpy和matplotlib第三方庫。 我們首先算好一個吸附例子得到CONTCAR,這個可以讓我們得到吸附分子的元素信息和理想的吸附高度。
  • 25個不錯PHP的遊戲編程腳本代碼分享
    本文介紹了25個不錯PHP的遊戲編程腳本代碼,包括簡單的擲骰器、隨機名稱生成器、場景生成器、牌組創建器(Deck builder)和裝備(shuffler)、簡單的撲克發牌器、Hangman遊戲
  • python基礎知識科普:python的起源和發展史以及應用場景
    UNIX的管理員們常常用shell去寫一些簡單的腳本,以進行一些系統維護的工作,比如定期備份、文件系統管理等等許多C語言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質是調用命令。它並不是一個真正的語言。比如說,shell沒有數值型的數據類型,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。
  • 訪問Blender 2.8 Python API 中的軸心點「pivot_point」類型
    blender的軸心點和遊標只是空間坐標系的一個點坐標,當然這個坐標點還有自身的坐標軸,隨著2.8版本的升級,軸心點pivot_point已經調到tool_settings內。
  • python人工智慧-圖像識別
    我這裡使用的是python3.6,PIL不支持python3所以使用如下命令pip install pytesseractpip install pillow如果是python2,則在命令行執行如下命令:pip install pytesseractpip install PIL這時候我們去運行上面的代碼會發現如下錯誤
  • python Scrapy在Windows平臺的安裝
    這種情況是在剛剛安裝好python而且從沒有裝過wheel模塊的情形下。Twisted模塊直接安裝,肯定是會報錯的,這邊採用的是安裝.whl文件,這邊提供一個下載連結 在這個輔助庫網站中搜索Twisted模塊,然後根據python版本下載版本對應版本,我是python 3.6.4 我選Twisted17.9.0cp36cp36mwin32.whl,下載下來後,我放在桌面,然後在桌面啟動cmd(按著shift鍵 右擊滑鼠 然後選擇 在此處打開命令窗口