Odbijanie sie kulki od ściany

0

napisalem sb taki kod. i kulka odmija mi sie od sciany prawej, ale nie wiem, jak ja odbijac od sciany lewej (nie umiem sb wyobrazic przeksztalcenia pozycji:/) no i co zrobic, zeby ta animacja caly czas trwala?

#!/usr/bin/env python
from visual import *

pileczka = sphere(pos=(-2,0,0), radius=0.5, color=color.yellow)
scianaPrawa = box(pos=(2,0,0), size=(0.5, 12, 5), color=color.green)
scianaLewa = box(pos=(-2,0,0), size=(0.5, 12, 5), color=color.green)
pileczka.velocity = vector(3,0,0)
deltat = 0.005
t = 0

while t < 3 :

	rate(100)

	if pileczka.pos.x >= scianaPrawa.pos.x :
		pileczka.velocity.x = -pileczka.velocity.x
	pileczka.pos = pileczka.pos + pileczka.velocity*deltat
	t = t + deltat
0

Już zrobiłem, tak, jak pisałeś i wsio gra :D

0

Jeszcze jedno pytanie: dlaczego 'nie dziala' jak dam pileczka.radius i lewaSciana.width [ew. prawaSciana.width]? Jak zrobic, aby to sie rzeczywiscie odbijalo, bo teraz przechodzi przez sciane :/

0

Musisz odpowiednio zmodyfikować granice o promień piłki i połowę szerokości ściany.

0

Ok, to wiem - ale jak daję: piłeczka.radius >= prawaSciana.width/2. to jakoś to nie idzie ... :/

0

Tutaj na prostym schemacie wykonanym we wiodącym programie graficznym przedstawiłem o co mi chodziło. user image

0

czyli jeśli (pileczka.pos.x+pileczka.radius) >= (scianaPrawa.pos.x + scianaPrawa.width/2.) ?

0

Dziękuję, tak działa: :)

if pileczka.pos.x+pileczka.radius >= scianaPrawa.pos.x:
		pileczka.velocity.x = -pileczka.velocity.x
0

O kurcze .. to w końcu dobrze to jest, czy nie?:)

0

Wygląda dobrze. Jak chcesz dokładne kolizje, to w sumie możesz wykonywać kod "fizyki" np. 5 razy na każdą klatkę animacji. Wtedy zmieniasz położenie tylko o 20% w każdym przebiegu pętli "fizyki".

1 użytkowników online, w tym zalogowanych: 0, gości: 1