我正在制作一個 2D 游戲,該游戲使用 2D 轉換來獲取物件在其環境中的位置到它將被繪制的相對位置。仿佛通過移動的攝像機觀看。
在縮放功能中,我采用位置向量 (self.pos) 并使用值 (z) 對其進行縮放。將此值分配給不同的屬性(self.zoom_pos) 但是,這一行: self.zoom_pos.x=self.pos.x*z 改變了我不想做的原始位置向量。
有什么解釋嗎?
def zoom(self,z):
print(self.pos.x)
self.zoom_pos.x=self.pos.x*z
self.zoom_pos.y=self.pos.y*z
print(self.pos.x,z)
輸入 self.pos.x = 100 z = 2
輸出 self.zoom_pos.x = 200 self.pos.x = 200
期望的輸出 self.zoom_pos.x = 200 self.pos.x = 200
編輯:列印陳述句僅用于測驗
uj5u.com熱心網友回復:
雖然您的問題尚不清楚,但您的代碼中似乎有self.zoom_pos = self.pos某個地方,所以這兩個變數現在指向同一個物件,對一個物件的任何更改都會改變另一個
一個簡單的解決方法是將該行更改為:
import copy # somewhere at the top
self.zoom_pos = copy.copy(self.pos)
這只會使 self.zoom_pos 成為 self.pos 中物件的副本,而不是同一個物件。
您還應該檢查有關 Python 名稱和值的事實和神話
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521497.html
標籤:Python班级
上一篇:從int到類的型別轉換行為怪異
