2017-10-21 5 views
0

空きスペースに落ちたときに落ちる力を得るにはどうすればいいですか?インターネット上の多くの答えは重力を加えると言われましたが、方程式。パイゲの落ちる力学(重力)

また、画像を背景として設定するにはどうすればよいですか?

は、ここに私のソースコードです:あなたは少し速く下にオブジェクトを移動するように

import pygame 


pygame.init() 

display_width = 2560 
display_height = 1440 

white = (255,255,255) 

gameDisplay = pygame.display.set_mode((display_width,display_height)) 
pygame.display.set_caption('RGB') 
clock = pygame.time.Clock() 

filler = pygame.image.load('filleraftergimp.png') 


def fill(x,y): 
    gameDisplay.blit(filler,(x,y)) 


x = (display_width * 0.45) 
y = (display_height * 0.8) 

x_change = 0 
y_change = 0 

diedorgameover = False 
while not diedorgameover: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      diedorgameover = True 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_a: 
       x_change = -5 
      elif event.key == pygame.K_d: 
       x_change = 5 
      elif event.key == pygame.K_s: 
       y_change = 5 
      elif event.key == pygame.K_w: 
       y_change = -5 

     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_a or event.key == pygame.K_d: 
       x_change = 0 
      if event.key == pygame.K_s or event.key == pygame.K_w: 
       y_change = 0 

    x += x_change 
    y += y_change 
    gameDisplay.fill(white) 
    fill(x,y) 


    pygame.display.update() 
    clock.tick(60) 


pygame.quit() 
quit() 
+0

質問は一度に1つだけお願いします。私は最近、重力[ここ](https://stackoverflow.com/a/46659103/6220679)の実装方法について説明しました。あなたの例では、 'y_change + = 1'のようにオブジェクトを加速するために各フレームをインクリメントするだけです。 – skrx

+0

あなたはそれを調べた結果、あなたが何をしたのか理解できなかったので、あなたはその他の投稿で何をしたのか説明してください。私もy_change値を変更しようとしましたが、それはただ私の性格を遅らせました。コントロールのスクリプト部分のy_valueを変更することを意味しましたか? –

+0

btw私の質問に答える時間をとってくれてありがとう –

答えて

1

(2Dプラットフォーマーのように)あなたのゲームで、重力を実装するには、あなただけの、y_change変数各フレームを増やすことができます毎回。この例を見てみましょう:

import pygame as pg 


pg.init() 

LIGHTBLUE = pg.Color('lightskyblue2') 
DARKBLUE = pg.Color(11, 8, 69) 

display = pg.display.set_mode((800, 600)) 
width, height = display.get_size() 
clock = pg.time.Clock() 

player_image = pg.Surface((30, 60)) 
player_image.fill(DARKBLUE) 

x = width * 0.45 
y = 0 
x_change = 0 
y_change = 0 
on_ground = False 

# A constant value that you add to the y_change each frame. 
GRAVITY = .3 

done = False 
while not done: 
    for event in pg.event.get(): 
     if event.type == pg.QUIT: 
      done = True 
     elif event.type == pg.KEYDOWN: 
      if event.key == pg.K_a: 
       x_change = -5 
      elif event.key == pg.K_d: 
       x_change = 5 
      elif event.key == pg.K_s: 
       y_change = 5 
      elif event.key == pg.K_w: 
       if on_ground: # Only jump if the player is on_ground. 
        y_change = -12 
        on_ground = False 
     elif event.type == pg.KEYUP: 
      if event.key == pg.K_a and x_change < 0: 
       x_change = 0 
      elif event.key == pg.K_d and x_change > 0: 
       x_change = 0 

    # Add the GRAVITY value to y_change, so that 
    # the object moves faster each frame. 
    y_change += GRAVITY 
    x += x_change 
    y += y_change 
    # Stop the object when it's near the bottom of the screen. 
    if y >= height - 130: 
     y = height - 130 
     y_change = 0 
     on_ground = True 

    # Draw everything. 
    display.fill(LIGHTBLUE) 
    pg.draw.line(display, (0, 0, 0), (0, height-70), (width, height-70)) 
    display.blit(player_image, (x, y)) 

    pg.display.update() 
    clock.tick(60) 

pg.quit()