Paddle.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "atomic component";
  2. //A Paddle component
  3. exports.component = function(self) {
  4. self.start = function() {
  5. //define node name
  6. self.node.name = "Paddle";
  7. self.createStartBall();
  8. self.subscribeToEvent("CreateNewBall", function(_) {
  9. self.createStartBall();
  10. self.started = false;
  11. });
  12. }
  13. self.createStartBall = function() {
  14. //create startBall prefab
  15. self.startBall = self.scene.createChildPrefab("Ball", "Prefabs/Ball.prefab");
  16. //also get a Ball component
  17. self.startBallComponent = self.startBall.getJSComponent("Ball");
  18. }
  19. self.update = function(delta) {
  20. //if we haven't ball started
  21. if(!self.started) {
  22. //check mouse button click
  23. if(Atomic.input.getMouseButtonPress(Atomic.MOUSEB_LEFT)) {
  24. //get rigidBody component of ours ball
  25. var body = self.startBall.getComponent("RigidBody2D");
  26. //let's run our ball!
  27. body.applyForceToCenter([20 + Math.random(), 20 + Math.random()], true);
  28. self.startBallComponent.started = true;
  29. self.started = true;
  30. }
  31. //if we haven't started yet, move our ball with the paddle
  32. self.startBall.position2D = [self.node.position2D[0], self.node.position2D[1]+64*Atomic.PIXEL_SIZE];
  33. }
  34. //get current mouse position, and project screen coordinates to the world coordinates
  35. var pos = Atomic.renderer.getViewport(0).screenToWorldPoint(Atomic.input.getMousePosition()[0], 0, 0);
  36. //set y value to -3
  37. pos[1] = -Atomic.graphics.height/2.5*Atomic.PIXEL_SIZE;
  38. //set paddle position to the calculated one
  39. self.node.position2D = pos;
  40. }
  41. }