[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 30 из 30
  • «
  • 1
  • 2
  • 28
  • 29
  • 30
Форум Panda3D - по русски » Panda3D » Общие вопросы » Вопросы
Вопросы
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
Да!Спасибо огромное!
 
Форум Panda3D - по русски » Panda3D » Общие вопросы » Вопросы
  • Страница 30 из 30
  • «
  • 1
  • 2
  • 28
  • 29
  • 30
Поиск: