Pular para o conteúdo

Receitas rápidas

Trechos prontos para copiar. Todos supõem que estão dentro de um componente (self.object é o objeto dono) e que o arquivo começa com:

import Range
from Range import logic, events

Mover e girar (o True usa os eixos do próprio objeto):

self.object.applyMovement((0.0, 0.1, 0.0), True)
self.object.applyRotation((0.0, 0.0, 0.05), True)

Distância até outro objeto:

alvo = self.object.scene.objects["Jogador"]
if self.object.getDistanceTo(alvo) < 5.0:
print("perto")

Olhar para um objeto (eixo Y aponta para o alvo):

vetor = self.object.getVectTo(alvo)[1]
self.object.alignAxisToVect(vetor, 1, 0.1)

Propriedade de jogo:

self.object["vida"] = self.object.get("vida", 100) - 10

Raio à frente (o que está até 10 m na frente):

frente = self.object.worldPosition + self.object.worldOrientation.col[1] * 10.0
atingido = self.object.rayCastTo(frente, 10.0)
if atingido:
print("bateu em", atingido.name)

Remover (vale no fim do quadro):

self.object.endObject()

Criar um objeto de uma camada inativa na posição de outro, por 120 quadros (0 = para sempre):

cena = self.object.scene
tiro = cena.addObject("Tiro", self.object, 120)

Achar objetos pela propriedade:

inimigos = [o for o in self.object.scene.objects if "inimigo" in o]

Trocar de cena e reiniciar:

self.object.scene.replace("Fase2")
self.object.scene.restart()

Tecla apertada agora / segurada:

teclas = logic.keyboard.inputs
if teclas[events.SPACEKEY].activated:
print("pulou")
if teclas[events.WKEY].active:
print("andando")

Clique do mouse e posição:

mouse = logic.mouse
if mouse.inputs[events.LEFTMOUSE].activated:
print("clicou em", mouse.position)

Tempo: movimento independente do FPS.

dt = 1.0 / max(logic.getAverageFrameRate(), 1.0)
self.object.applyMovement((0.0, 2.0 * dt, 0.0), True)

Guardar dados entre cenas:

logic.globalDict["pontos"] = logic.globalDict.get("pontos", 0) + 1