Warum bewegen sich andere Objekte, die sich nicht im Python/Ursina -Motor bewegen sollten?
Posted: 16 Aug 2025, 23:34
Ich erstelle ein Spiel mit der Ursina -Engine. Ich fügte meinem Charakter eine einfache glattfolie hinzu. Bei SmoothFollow bemerkte ich, dass Objekte, die an den X- und Y -Koordinaten der Kamera (Gesundheitsstangen, Ebenen usw.) befestigt waren, leicht in die Richtung verschoben wurden, in die sich der Charakter bewegte, aber als der Charakter angehalten wurde, kehrten die Objekte in ihre ursprünglichen Positionen zurück. Es kann ein einfaches Problem sein, aber dieses Problem macht das Spiel wirklich hässlich. Hier ist der Python -Code: < /p>
Code: Select all
from ursina import *
import random
app = Ursina()
Mermiler = []
back = Entity(model="quad", z = 4, scale=(70,40,1), texture="Back.png")
mermiat = True
mertim = 0
can = 5
kill = 0
level = 0
dushiz = 4
class Dusman(Entity):
def __init__(self,x,y):
super().__init__()
self.model = "quad"
self.scale = (2.08,1.04)
self.x = x
self.y = y
self.collider = "box"
self.texture = "Dusman.png"
def update(self):
global can, oyun, Ens, kill, dushiz
if oyun == True:
if self.x > Player.x and self.y > Player.y:
self.x -= dushiz * time.dt
self.y -= dushiz * time.dt
elif self.x > Player.x and self.y < Player.y:
self.x -= dushiz * time.dt
self.y += dushiz * time.dt
elif self.x < Player.x and self.y > Player.y:
self.x += dushiz * time.dt
self.y -= dushiz * time.dt
elif self.x < Player.x and self.y < Player.y:
self.x += dushiz * time.dt
self.y += dushiz * time.dt
for mermi in Mermiler[:]:
if self.intersects(mermi).hit:
destroy(self)
destroy(mermi)
Mermiler.remove(mermi)
Ens -= 1
kill += 1
if self.intersects(Player).hit:
can -= 1
destroy(self)
Ens -=1
class Mermi(Entity):
def __init__(self):
super().__init__()
self.model = "quad"
self.position = Player.position
self.rotation_z = Player.rotation_z
self.scale = (0.25,0.5)
self.collider = "box"
self.texture = "Mermi.png"
class particle(Entity):
def __init__(self,x,y):
super().__init__()
self. model = "quad"
self.scale = 0.293
self.x = x
self.y = y
self.z = -3
self.texture = "Duman.png"
def update(self):
self.scale -= 0.19 * time.dt
ax = random.uniform(-0.5,0.5)
ay = random.uniform(-0.5,0.5)
self.x += ax * 3.4 * time.dt
self.y += ay * 3.4 * time.dt
self.rotation_z += 2 * time.dt
if self.scale 19 and held_keys["w"]:
self.y = 15
elif self.y < -19 and held_keys["s"]:
self.y = -15
if mermiat == False and mertim >= 1.0:
mermiat = True
mertim = 0
elif mermiat == True and mertim >= 1.0:
mertim = 0
if mermiat == True:
BulletBar.scale_x = 12
if mermiat == False:
BulletBar.scale_x = mertim * 10
def SpawnEnemy1():
global oyun, Ens
if oyun == True:
rx = random.uniform(-35.0,35.0)
Dusman(x=rx,y=20)
Ens += 1
def SpawnEnemy2():
global oyun, Ens
if oyun == True:
rx = random.uniform(-35.0,35.0)
Dusman(x=rx,y=-20)
Ens += 1
def SpawnEnemy3():
global oyun, Ens
if oyun == True:
ry = random.uniform(-20.0,20.0)
Dusman(x=35,y=ry)
Ens +=1
def SpawnEnemy4():
global oyun, Ens
if oyun == True:
ry = random.uniform(-20.0,20.0)
Dusman(x=-35,y=ry)
Ens += 1
spwn1 = 0
spwn2 = 0
spwn3 = 0
spwn4 = 0
Player = Karakter()
BulletBar = Entity(model = "quad", position = (-13,-9,-2),scale=(12,0.5,1), color="FFFF00", origin=(-0.5,0,0))
HealthBar = Entity(model = "quad", position = (-13,-7.5,-2),scale=(12,1,1), color="FF0000", origin=(-0.5,0,0))
levelgos = Entity(model="quad", position=(-16,10,-2),scale=(12.3,3.3,1), texture="level-1.png")
gamewon = Entity(model="quad", position=(0,0), texture="Bink.png")
oyun = True
Ens = 0
spawnspeed = 6
def update():
global spwn1, spwn2, spwn3, spwn4, can, oyun, Ens, kill, level, spawnspeed, dushiz
BulletBar.x = camera.x - 13
BulletBar.y = camera.y - 9
HealthBar.x = camera.x - 13
HealthBar.y = camera.y - 7.5
HealthBar.scale_x = can * 2.4
spwn1 += time.dt
spwn2 += time.dt
spwn3 += time.dt
spwn4 += time.dt
level = (kill // 20) + 1
levelgos.x = camera.x - 15
levelgos.y = camera.y + 10.2
for mermi in Mermiler[:]:
if abs(mermi.x) > (abs(Player.x) + 5) or abs(mermi.y) > (abs(Player.y) + 5):
Mermiler.remove(mermi)
destroy(mermi)
else:
if mermi.rotation_z == 0:
mermi.y += 4 * time.dt
elif mermi.rotation_z == 180:
mermi.y -= 4 * time.dt
elif mermi.rotation_z == 90:
mermi.x += 4 * time.dt
elif mermi.rotation_z == 270:
mermi.x -= 4 * time.dt
if spwn1 >= spawnspeed:
spwn1 = 0
if Ens = spawnspeed:
if Ens = spawnspeed:
if Ens= spawnspeed:
if Ens