{"id":958,"date":"2026-04-02T01:26:24","date_gmt":"2026-04-02T04:26:24","guid":{"rendered":"https:\/\/www2.ic.uff.br\/pplay\/?page_id=958"},"modified":"2026-04-02T01:26:31","modified_gmt":"2026-04-02T04:26:31","slug":"fisica-2-0","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/fisica-2-0\/","title":{"rendered":"F\u00edsica"},"content":{"rendered":"\n<div class=\"doc-container\">\n    <div class=\"doc-header\">\n        <h1>F\u00edsica Cinem\u00e1tica 4.0<\/h1>\n        <div class=\"doc-badge\">M\u00f3dulo: PPlay.physics | Dificuldade: Avan\u00e7ado<\/div>\n        <p>Criar jogos de plataforma do zero envolve muita matem\u00e1tica complexa. O <strong>Motor Cinem\u00e1tico 4.0<\/strong> resolve o temido &#8220;Corner Snapping&#8221; (ficar preso em quinas) dividindo a movimenta\u00e7\u00e3o e a colis\u00e3o por eixos (X e Y separadamente).<\/p>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>1. Acoplando a F\u00edsica<\/h2>\n        <p>Em vez de programar a gravidade manualmente no seu <code>while True<\/code>, voc\u00ea cria o motor f\u00edsico e o injeta no seu personagem. A engine cuidar\u00e1 de todo o c\u00e1lculo de in\u00e9rcia e limites de velocidade (Terminal Velocity).<\/p>\n        <table class=\"doc-table\">\n            <tr>\n                <th>Comando<\/th>\n                <th>A\u00e7\u00e3o<\/th>\n            <\/tr>\n            <tr>\n                <td><code>motor = Physics(gravidade=2500)<\/code><\/td>\n                <td>Cria as leis da f\u00edsica da sua fase. Valores maiores fazem o pulo cair mais r\u00e1pido.<\/td>\n            <\/tr>\n            <tr>\n                <td><code>player.setup_physics(motor)<\/code><\/td>\n                <td>Transforma o Sprite em um <em>KinematicBody<\/em>.<\/td>\n            <\/tr>\n            <tr>\n                <td><code>player.update_physics(solidos)<\/code><\/td>\n                <td>Aplica a gravidade, move o objeto e o impede de atravessar a lista de s\u00f3lidos passados.<\/td>\n            <\/tr>\n        <\/table>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>2. C\u00f3digo de Plataforma Perfeito<\/h2>\n        <pre class=\"doc-code\"><code>from PPlay.window import Window\nfrom PPlay.sprite import Sprite\nfrom PPlay.physics import Physics\n\njanela = Window(800, 600, \"Plataforma Pro\")\n\n# 1. Setup\nmotor = Physics(gravidade=2500)\nplayer = Sprite(\"mario.png\")\nplayer.setup_physics(motor)\n\nchao = Sprite(\"bloco.png\")\nchao.set_position(0, 500)\nlista_paredes = [chao]\n\nwhile True:\n    janela.set_background_color(\"skyblue\")\n    \n    # 2. Movimento Lateral (Usa as setas automaticamente)\n    player.move_key_x(350)\n    \n    # 3. Pulo (O motor checa se est\u00e1 no ch\u00e3o para voc\u00ea!)\n    if janela.keyboard.key_pressed(\"SPACE\"):\n        player.pular(900)\n\n    # 4. Executa a Matem\u00e1tica\n    player.update_physics(lista_paredes)\n    \n    chao.draw()\n    player.draw()\n    janela.update()<\/code><\/pre>\n    <\/div>\n\n    <div class=\"doc-tip\">\n        <div class=\"doc-tip-title\">\ud83d\udca1 Dica do S\u00eanior: O &#8220;Feeling&#8221; Invis\u00edvel<\/div>\n        <p>Ao usar o <code>update_physics<\/code>, o seu personagem ganha duas mec\u00e2nicas secretas usadas em jogos AAA:<br>\n        &#8211; <strong>Coyote Time:<\/strong> O jogador ainda pode pular por 150ms mesmo ap\u00f3s escorregar para fora de uma plataforma.<br>\n        &#8211; <strong>Jump Buffering:<\/strong> Se ele apertar pular milissegundos antes de tocar o ch\u00e3o, a engine &#8220;lembra&#8221; do comando e pula no frame exato do impacto.<\/p>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>F\u00edsica Cinem\u00e1tica 4.0 M\u00f3dulo: PPlay.physics | Dificuldade: Avan\u00e7ado Criar jogos de plataforma do zero envolve muita matem\u00e1tica complexa. O Motor Cinem\u00e1tico 4.0 resolve o temido &#8220;Corner Snapping&#8221; (ficar preso em quinas) dividindo a movimenta\u00e7\u00e3o e a colis\u00e3o por eixos (X e Y separadamente). 1. Acoplando a F\u00edsica Em vez de programar a gravidade manualmente no [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"tutorial-template.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/958"}],"collection":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/comments?post=958"}],"version-history":[{"count":1,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/958\/revisions"}],"predecessor-version":[{"id":960,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/958\/revisions\/960"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}