столкновение с врагом в ursina

#python #ursina

#python #ursina

Вопрос:

я создаю игру в ursina и хочу знать, как я могу вывести что-то, что говорит о его истинности или ложности (например, в логическом значении). потому что игра, которую я создаю, нуждается в столкновении с сущностью. я искал решение, но ничего не могу найти. итак, люди, которые используют ursina, пожалуйста, помогите мне, вот код:

 from ursina import *
import random


#variables
speed = 0.05
number_of_pokemon = 10

app = Ursina()

#textures
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]

#entitys: pokemon(s), player, textbox, battles
player = Entity(model = 'cube', texture = player_texture, scale = (1,1,0), position = 
(0,0,-0.1))
#textbox = Entity(model ='cube', texture = textbox_texture, scale = (5,1,0), position = 
(0,-3,0))

#spawns 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))


#spawns grass
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))

#movement
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()
 

Ответ №1:

Установите коллайдер и проверьте, пересекается ли ваша сущность с другой:

 player = Entity(model='cube',
                texture=player_texture,
                scale=(1, 1, 0),
                position=(0, 0, -0.1),
                collider='box') # <-- do the same for all pokemon entities

hit_info = player.intersects()
if hit_info.hit:
    print(hit_info.entity)
 

Комментарии:

1. спасибо за объяснение: D

2. @LucasVuijk если я решил вашу проблему, пожалуйста, рассмотрите возможность голосования и / или пометки ответа как принятого для завершения цикла контроля качества.