2016-07-21 9 views
1

現在、アンドロイド環境用のfpsライクなゲームです。モバイル向けのピクセルとパーセンテージの比較

ピクセルを使用してオブジェクトを作成すると低解像度のデバイスが高解像度の電話よりも簡単にゲームをプレイできることに気付きました。

今回は建物のパーツにパーセンテージを使用すると、より大きなデバイスが得られます。このようなタブレットは携帯電話よりも大きいサイズで、私のオブジェクトをeasly撮影できます。

オブジェクトごとに正確にすべてのデバイスで同じサイズを使用できますか?

もっとspecificly私のpython-kivyを使用し、それはあなたがrelative_sizeとrelative_positionメソッドを作ることができセンチ/フィートまたはなどとして

答えて

2

をオブジェクトを定義することが可能です。そして、窓の幅または高さに関連してそれらを作る。 Windowクラスからウィンドウのサイズを取得します。 オブジェクトのサイズ(幅、高さ)は、幅または高さのいずれか一方にのみ関連してください。またはあなたのオブジェクトは歪められます。

from kivy.uix.widget import Widget 
from kivy.graphics import Canvas,InstructionGroup,Color,Ellipse 
from kivy.core.window import Window 
from kivy.app import App 


class MyCanvas(Widget): 

    def __init__(self,**kwargs): 
     super(MyCanvas,self).__init__(**kwargs) 
     #Window.size = (200,100) 

     self.size = Window.size 

     self.orientation = "vertical" 

     self.ball = InstructionGroup() 

     self.ball_size = self.relative_size(10,10) 

     self.color = Color(0, 1, 1) 
     self.ellipse = Ellipse(size=self.ball_size,pos=self.relative_position(100,50,self.ball_size)) 

     self.ball.add(self.color) 
     self.ball.add(self.ellipse) 

     self.canvas.add(self.ball) 


    def relative_position(self,x,y,obj_size=(0,0)): # pass obj_size if you want the position to be the center of the object11 
     x = (self.width/100.0) * x - obj_size[0]/2.0 
     y = (self.height/100.0) * y - obj_size[1]/2-.0 
     return (x,y) 


    def relative_size(self,w,h): 
     return (self.width/float(w),self.width/float(h)) # only make it relative to your width or heigh 
                 # or your object will be warped 


class MyApp(App): 
    def build(self): 
     return MyCanvas() 

if __name__ == "__main__": 
    MyApp().run() 

ここで、relative_positionメソッドがpercantageになります。したがって、両方向に0-100から渡します。それ以外のものが必要な場合は、thtメソッドで100を変更します。 #Window.size = (200,100)のコメントを外して、ウィンドウサイズで再生し、その動作を確認してください。 携帯端末の向きが変わったように、アプリケーションのサイズが変更された場合でもイベントを作成することができます。 私はそれを作っていないので、これはアプリケーションの開始サイズでのみ機能します。

関連する問題