Вопросы
|
|
Zegy | Дата: Воскресенье, 21.08.2011, 15:23 | Сообщение # 436 |
Сержант
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: 0
Статус: Offline
| нет мне нужно просто чтоб шифт комбинировался с клавишами wasd .Пробовал как в мануале написано, но выбивает кейеррор либо если заношу в кеймап, то по-любому без результатов.Может я что-то не то делаю.
|
|
| |
serg-kkz | Дата: Воскресенье, 21.08.2011, 15:28 | Сообщение # 437 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Zegy, в том то и вопрос, для чего комбинация? для изменения скорости или чтоб без нажатия Shift клавиши WSAD не работали.
ООП -
Сообщение отредактировал serg-kkz - Воскресенье, 21.08.2011, 15:30 |
|
| |
Zegy | Дата: Воскресенье, 21.08.2011, 15:31 | Сообщение # 438 |
Сержант
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: 0
Статус: Offline
| чтобы шифт не работал без нажатия wasd
|
|
| |
serg-kkz | Дата: Воскресенье, 21.08.2011, 15:42 | Сообщение # 439 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Quote (Zegy) чтобы шифт не работал без нажатия wasd Хм... странно... но в этом случае нужно его отключать а не комбинировать. Ты наверное не правильно реализовал код перемещения и по этому такие заморочки нужны теперь. Опиши как у тебя реализованно движение.
ООП -
|
|
| |
Zegy | Дата: Воскресенье, 21.08.2011, 15:56 | Сообщение # 440 |
Сержант
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: 0
Статус: Offline
| Я когда зажимаю допустим а+шифт, то шифт работает только с а
Code class Control(DirectObject): def __init__(self): self.speed = 10 self.accel = 10 self.heading = 180 self.pitch = 0 self.forward = Vec3(0,2,0) self.backward = Vec3(0,-1,0) self.left = Vec3(-1,0,0) self.right = Vec3(1,0,0) taskMgr.add(self.cameraTask, "Camera Task") taskMgr.add(self.moveTask, "Move Task") base.disableMouse() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
self.room = loader.loadModel("models/abstractroom") self.room.reparentTo(render)
self.player = render.attachNewNode("attach_Player") base.camera.reparentTo(self.player) self.keyMap = {"w" : False, "a" : False, "s" : False, "d" : False, "shift" : False} self.accept("w", self.setKey, ["w", True]) self.accept("a", self.setKey, ["a", True]) self.accept("s", self.setKey, ["s", True]) self.accept("d", self.setKey, ["d", True]) self.accept("shift", self.setKey, ["shift", True]) self.accept("w-up", self.setKey, ["w", False]) self.accept("a-up", self.setKey, ["a", False]) self.accept("s-up", self.setKey, ["s", False]) self.accept("d-up", self.setKey, ["d", False]) self.accept("shift-up", self.setKey, ["shift", False])
def setKey(self,key,value): self.keyMap[key] = value
def moveTask(self,task): dt = globalClock.getDt() if(self.keyMap["w"] == True): self.player.setPos(self.player,self.forward*self.speed*dt) if(self.keyMap["a"] == True): self.player.setPos(self.player,self.left*self.speed*dt) if(self.keyMap["s"] == True): self.player.setPos(self.player,self.backward*self.speed*dt) if(self.keyMap["d"] == True): self.player.setPos(self.player,self.right*self.speed*dt) if(self.keyMap["shift"] == True): if self.speed > 25: self.speed = 25 else: self.speed += (self.accel*dt) if(self.keyMap["shift"] == False): if self.speed < 10: self.speed = 10 else: self.speed -= (self.accel*dt) if(dt>.20): return task.cont return task.cont
Сообщение отредактировал Zegy - Воскресенье, 21.08.2011, 17:47 |
|
| |
serg-kkz | Дата: Воскресенье, 21.08.2011, 16:48 | Сообщение # 441 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Zegy, не знаю угадал или нет, но вот поправил.
Code import direct.directbase.DirectStart from direct.showbase.DirectObject import DirectObject from pandac.PandaModules import *
class Control(DirectObject): def __init__(self): self.speed_gl = 10 self.SpeedMult = 2
taskMgr.add(self.moveTask, "Move Task") base.disableMouse() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
self.room = loader.loadModel("models/abstractroom") self.room.reparentTo(render)
self.player = render.attachNewNode("attach_Player") base.camera.reparentTo(self.player) self.keyMap = {"w" : False, "a" : False, "s" : False, "d" : False, "shift" : False} self.accept("w", self.setKey, ["w", True]) self.accept("a", self.setKey, ["a", True]) self.accept("s", self.setKey, ["s", True]) self.accept("d", self.setKey, ["d", True]) self.accept("shift", self.setKey, ["shift", True]) self.accept("w-up", self.setKey, ["w", False]) self.accept("a-up", self.setKey, ["a", False]) self.accept("s-up", self.setKey, ["s", False]) self.accept("d-up", self.setKey, ["d", False]) self.accept("shift-up", self.setKey, ["shift", False])
def setKey(self,key,value): self.keyMap[key] = value
def moveTask(self,task): dt = globalClock.getDt() speed = self.speed_gl if(self.keyMap["shift"] == True): speed = self.speed_gl*self.SpeedMult if(self.keyMap["w"] == True): self.player.setPos(self.player.getPos() + (0, dt*(speed+1), 0)) if(self.keyMap["a"] == True): self.player.setPos(self.player.getPos() - (dt*speed, 0, 0)) if(self.keyMap["s"] == True): self.player.setPos(self.player.getPos() - (0, dt*speed, 0)) if(self.keyMap["d"] == True): self.player.setPos(self.player.getPos() + (dt*speed, 0, 0)) return task.cont Control() run()
ООП -
|
|
| |
serg-kkz | Дата: Воскресенье, 21.08.2011, 21:09 | Сообщение # 442 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Zegy, я вроде окончательно понял, о чем ты, проверь такое решение. И сообщи, решен ли твой вопрос.
Code import direct.directbase.DirectStart from direct.showbase.DirectObject import DirectObject from pandac.PandaModules import *
class Control(DirectObject): def __init__(self): self.speed_gl = 10
taskMgr.add(self.moveTask, "Move Task") base.disableMouse() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
self.room = loader.loadModel("models/abstractroom") self.room.reparentTo(render)
self.player = render.attachNewNode("attach_Player") base.camera.reparentTo(self.player) self.keyMap = {"w" : False, "a" : False, "s" : False, "d" : False, "shift" : False} self.accept("shift-w", self.setKey, ["w", True]) self.accept("w", self.setKey, ["w", True]) self.accept("shift-a", self.setKey, ["a", True]) self.accept("a", self.setKey, ["a", True]) self.accept("shift-s", self.setKey, ["s", True]) self.accept("s", self.setKey, ["s", True]) self.accept("shift-d", self.setKey, ["d", True]) self.accept("d", self.setKey, ["d", True]) self.accept("w-up", self.setKey, ["w", False]) self.accept("a-up", self.setKey, ["a", False]) self.accept("s-up", self.setKey, ["s", False]) self.accept("d-up", self.setKey, ["d", False]) self.accept("shift", self.setKey, ["shift", True]) self.accept("shift-up", self.setKey, ["shift", False])
def setKey(self,key,value): self.keyMap[key] = value
def moveTask(self, task): dt = globalClock.getDt() speed = self.speed_gl
if(self.keyMap["w"] == True): self.player.setPos(self.player.getPos() + (0, dt*speed, 0)) if(self.keyMap["shift"] == True): self.player.setPos(self.player.getPos() + (0, dt*speed*2, 0)) if(self.keyMap["a"] == True): self.player.setPos(self.player.getPos() - (dt*speed, 0, 0)) if(self.keyMap["shift"] == True): self.player.setPos(self.player.getPos() - (dt*speed*2, 0, 0)) if(self.keyMap["s"] == True): self.player.setPos(self.player.getPos() - (0, dt*speed, 0)) if(self.keyMap["shift"] == True): self.player.setPos(self.player.getPos() - (0, dt*speed*2, 0)) if(self.keyMap["d"] == True): self.player.setPos(self.player.getPos() + (dt*speed, 0, 0)) if(self.keyMap["shift"] == True): self.player.setPos(self.player.getPos() + (dt*speed*2, 0, 0)) return task.cont Control() run()
ООП -
|
|
| |
Zegy | Дата: Воскресенье, 21.08.2011, 21:34 | Сообщение # 443 |
Сержант
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: 0
Статус: Offline
| Да!Спасибо огромное!
|
|
| |