| Вопросы | 
|  | 
| 
| 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 | Да!Спасибо огромное! |  |  |  |  |