zim_physics实现火把火苗点亮花灯游戏代码

代码语言:html

所属分类:游戏

代码描述:zim_physics实现火把火苗点亮花灯游戏代码,键盘上下左右键移动火把点亮花灯。

代码标签: zim_physics 火把 火苗 点亮 花灯 游戏 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

  <meta charset="UTF-8">

  



</head>

<body  >

  
      <script type="module">
import zim from "//repo.bfw.wiki/bfwrepo/js/module/zim/zim_physics.js";

// see https://zimjs.com
// and https://zimjs.com/learn
// and https://zimjs.com/docs

new Frame({
  scaling: FIT,
  width: 1024,
  height: 768,
  color: darker,
  outerColor: darker,
  ready: ready,
  // set allowDefault to true to access key controlls
  // normally we do not need this - but in a CodePen iFrame we do
  allowDefault: true });

function ready() {

  // given F (Frame), S (Stage), W (width), H (height)
  // put your code here

  var backing = new Rectangle(W * 4, W * 4, black).center();

  // make some foliage
  loop(400, () => {
    new Circle(rand(50, 300), null, [
    orange.darken(.5, .8), green.darken(.5, .8)],
    rand(1, 5)).
    sca(1, rand(10)).
    rot(rand(360)).
    alp(.2).
    loc(rand(backing.width), rand(backing.height), backing);
  });
  backing.cache(); // so do not have to redraw all circles 60 times a second

  // create Physics world with no gravity, as big as background, and scrollable

  var physics = new Physics(0, new Boundary(backing), true);


  // add pumpkins to visit - then add to stage so physics works properly

  var pumpkins = new Tile(makePumpkin, 6, 6, 200, 200).center();

  pumpkins.loop(function (pumpkin) {
    pumpkin.addTo().mov(rand(-50, 50), rand(-50, 50)).addPhysics(false, 10);
  }, true);

  new Pane(W + 200, 300, "Light the Pumpkins!\n\nuse WASD or arrow keys", black, orange).show(init);

  function init() {

    // the carrier will rotate 
    // we can counter the rotation 
    // see https://codepen.io/danzen/pen/daJjpr
    // or just make the match follow a carrier

    var carrier = new Circle(21).
    center().
    addPhysics().
    alp(0).
    control("both", 15) // add keyboard controls
    .follow({ borderLock: false }); // follow the bug

    const match = new Rectangle(5, 60, grey).
    reg(CENTER, TOP).
    center().
    bot().
    ord(1); // below pumpkins above backing

    const flame = new Emitter({
      obj: new Circle(5, orange).alp(.6),
      random: {
        scaleX: { min: 1.3, max: 1.5 },
        scaleY: { min: 2.3, max: 2.5 } },

      width: 20,
      height: 40,
      interval: .02,
      life: 1,
      gravity: -2,
      force: { min: .2, max: .4 },
      angle: { min: -90 - 40, max: -90 + 40 } }).
    pos(0, 0, CENTER, TOP, match);

    Ticker.add(() => {
      match.loc(carrier); // make the match follow the carrier
    });


    carrier.contact(function (obj) {
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0