Untitled
unknown
plain_text
a year ago
2.3 kB
3
Indexable
Never
key_switch_camera = 'c' # камера привязана к герою или нет key_switch_mode = 'z' # можно проходить сквозь препятсвия или нет key_forward = 'w' # шаг вперед key_back = 's' # шаг назад key_left = 'a' # шаг влево key_right = 'd' # шаг вправо key_up = 'e' # шаг вверх key_down = 'q' # шаг вниз key_turn_left = 'n' # поворот камеры направо key_turn_right = 'm' # поворот камеры налево class Hero: def __init__(self, pos, land): self.land = land self.mode = True # режим прохождения сквозь блоки self.hero.setColor(1, 0.5, 0) self.hero.setScale(0.3) self.hero.setPos(pos) self.hero.reparentTo(render) self.cameraBind() self.accept_events() def cameraBind(self): base.disableMouse() base.camera.setH(180) base.camera.reparentTo(self.hero) base.camera.setPos(0, 0, 1.5) self.cameraOn = True def cameraUp(self): pos = self.hero.getPos() base.mouseInterfaceNode.setPos(-pos[0], -pos[1], -pos[2]-3) base.camera.reparentTo(render) base.enableMouse() self.cameraOn = False def changeView(self): if self.cameraOn: self.cameraUp() else: self.cameraBind() def turn_left(self): self.hero.setH((set.hero,getH() + 5) %360) def turn_right(self): self.hero.setH((set.hero,getH() - 5) %360) def look_at(self, angle): # возвращает координаты в которые двинулся персонаж, если он делает шаг # в направлении angle x_from = round(self.hero.getX()) y_from = round(self.hero.getY()) z_from = round(self.hero.getZ()) dx, dy = self.check_dir(angle) x_to = x_from + dx y_to = y_from + dy return x_to, y_to, z_from def just_move(self, angle): pos = self.look_at(angle) self.hero.setPos(pos) def move_to(self, angle): if self_mode: self.just_move(angle)