Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cave
- class PlayerController(cave.Component):
- walkSpeed = 2.0
- runSpeed = 6.0
- def start(self, scene: cave.Scene):
- self.transf = self.entity.getTransform()
- self.character : cave.CharacterComponent = self.entity.get("Character")
- self.mesh = self.entity.getChild("Mesh")
- self.meshTransf = self.mesh.getTransform()
- self.animator : cave.AnimationComponent = self.mesh.get("Animation")
- def update(self):
- dt = cave.getDeltaTime()
- events = cave.getEvents()
- x = events.active(cave.event.KEY_A) - events.active(cave.event.KEY_D)
- z = events.active(cave.event.KEY_W) - events.active(cave.event.KEY_S)
- dir = cave.Vector3(x, 0.0, z)
- isMoving = dir.length() > 0.0
- if isMoving:
- dir.normalize()
- aimDir = self.transf.transformDirection(dir)
- self.meshTransf.lookAtSmooth(-aimDir, 0.2)
- isRunning = events.active(cave.event.KEY_LSHIFT)
- if isRunning:
- dir *= self.runSpeed
- else:
- dir *= self.walkSpeed
- if events.pressed(cave.event.KEY_SPACE):
- self.character.jump()
- self.character.setWalkDirection(dir * dt)
- # Animating:
- if self.character.onGround():
- if isMoving:
- if isRunning:
- self.animator.playByName("p-run", 0.2, loop=True)
- else:
- self.animator.playByName("p-walk", 0.2, loop=True)
- else:
- self.animator.playByName("p-idle", 0.2, loop=True)
- else:
- self.animator.playByName("p-fall", 0.3, loop=True)
- def end(self, scene: cave.Scene):
- pass
Advertisement
Add Comment
Please, Sign In to add comment