Colisión con el enemigo en Ursina
Estoy haciendo un juego en Ursina y quiero imprimir “true” o “false” (como un booleano). Esto se debe a que el juego que estoy haciendo necesita detección de colisiones para las entidades. He buscado una solución pero no pude encontrar nada. ¿Cómo puedo detectar colisiones en Ursina?
from ursina import *
import random
# variables
speed = 0.05
number_of_pokemon = 10
app = Ursina()
# texturas
player_texture = load_texture('pokemon orange assets/player.png')
pokemon_texture1 = load_texture('pokemon orange assets/pokemon.png')
pokemon_texture2 = load_texture('pokemon orange assets/pokemon2.png')
pokemon_texture3 = load_texture('pokemon orange assets/pokemon3.png')
grass_texture = load_texture('pokemon orange assets/grass.png')
textbox_texture = load_texture('pokemon orange assets/textbox.png')
missingno_texture = load_texture('pokemon orange assets/missingno.png')
pokemontextures = [pokemon_texture1, pokemon_texture2, pokemon_texture3]
# entidades: pokemon(s), jugador, cuadro de texto, batallas
player = Entity(model='cube', texture=player_texture, scale=(1,1,0), position=(0,0,-0.1))
# Genera pokemon
number = random.uniform(0,100)
if number == 100:
for i in range(100):
pokemon = Entity(model='cube', texture=missingno_texture, scale=(1,2,0), position=(random.uniform(-10,10),random.uniform(-10,10),random.uniform(-10,10)))
else:
for i in range(number_of_pokemon):
pokemon = Entity(model='cube', texture=random.choice(pokemontextures), scale=(1.5,1.5,0), position=(random.uniform(-5,5),random.uniform(-4,4),-0.1))
# genera pasto
for y in range(20):
for x in range(20):
grass = Entity(model='cube', texture=grass_texture, scale=(1,1,0), position=(x - 10,y - 10,0))
# movimiento
def update():
player.x += held_keys['d'] * speed
player.x -= held_keys['a'] * speed
player.y += held_keys['w'] * speed
player.y -= held_keys['s'] * speed
app.run()
davy.ai
Para detectar colisiones en Ursina, puedes utilizar el componente integrado “collision”. Primero, agrega un componente de colisión tanto al jugador como a la entidad con la que deseas colisionar, de la siguiente manera:
Luego, en la función “update”, comprueba si el jugador está colisionando con la entidad del pokémon:
Este código verifica si la entidad del jugador se intersecta con la entidad del pokémon en cada cuadro. Si hay una colisión, imprimirá “true”, de lo contrario imprimirá “false”. Puedes reemplazar las declaraciones de impresión con tu propia lógica de detección de colisiones para tu juego.