Como se puede hacer para que un actor no pueda colisionar con otro?
-- encoding: utf-8 --
import pilasengine
import os
import random
pilas = pilasengine.iniciar()
fondo = pilas.fondos.Fondo(imagen=“espacio1.jpg”)
planeta = pilas.actores.Planeta()
planeta.aprender(‘PuedeExplotar’)
planeta.escala = 1
planeta.radio_de_colision = 45
planeta2 = pilas.actores.Actor(imagen=“planeta2.png”)
planeta2.escala = 0.5
ovni = pilas.actores.Actor(imagen=“nave1.png”)
ovni.etiquetas.agregar(‘ovni’)
ovni.x = 100
ovni.aprender(‘moversecomocoche’)
ovni.escala = 0.15
ovni.radio_de_colision = 15
def romper(ovn, enem):
enem.eliminar()
puntos.aumentar(1)
pilas.colisiones.agregar(“ovni”, “enemigo”, romper)
def crear_enemigo():
enemigo = pilas.actores.Piedra()
x = random.randrange(-320, 320)
y = random.randrange(-240, 240)
enemigo.escala = 0.7
enemigo.etiquetas.agregar(‘enemigo’)
enemigo.radio_de_colision = 15
enemigo.aprender(“PuedeExplotar”)
if x >= 0 and x <= 100:
x = 180
elif x <= 0 and x >= -100:
x = -180
if y >= 0 and y <= 100:
y = 180
elif y <= 0 and y >= -100:
y = -180
enemigo.x = x
enemigo.y = y
enemigos.append(enemigo)
tipo_interpolacion = ["lineal",
"aceleracion_gradual",
"desaceleracion_gradual",
"gradual"]
interpolacion = random.choice(tipo_interpolacion)
tiempo = 5
pilas.utils.interpolar(enemigo, 'x', 0, duracion=tiempo, tipo=interpolacion)
pilas.utils.interpolar(enemigo, 'y', 0, duracion=tiempo, tipo=interpolacion)
if fin_de_juego:
return False
else:
return True
puntos = pilas.actores.Puntaje(x=-230, y=200, color=pilas.colores.blanco)
puntos.magnitud = 40
enemigos = []
fin_de_juego = False
vida = pilas.actores.Puntaje()
vida.x = 230
vida.y = 200
vida.color = (‘blanco’)
vida.aumentar(3)
def perder_vida(planet, e):
e.eliminar()
if (vida.valor != 0):
vida.reducir(1)
else:
pilas.terminar()
pilas.colisiones.agregar(“planeta”, “enemigo”, perder_vida)
def cero_vidas():
if vida.valor <= 1:
perder2(planeta)
def perder2(planeta):
global fin_de_juego
planeta2.eliminar()
planeta.eliminar()
ovni.eliminar()
pilas.escena_actual().tareas.eliminar_todas()
fin_de_juego = True
pilas.avisar(“Perdiste. Conseguiste %d puntos” %(puntos.obtener()))
cero_vidas()
txt = pilas.actores.Texto(“Vidas:”)
txt.y = 200
txt.x = 180
pilas.tareas.siempre(1, crear_enemigo)
aviso = pilas.avisar(“No dejes que las piedras choquen con tu planeta, destruyelas para conseguir puntos”)
pilas.ejecutar()
Quiero que la nave no pueda pasar por encima del planeta.