レトロゲームっぽい画面を作る 【ゲーム・プログラミング講座】【JavaScriptサンプル】

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ • 45

  • @heron-no-suugaku
    @heron-no-suugaku  4 роки тому +33

    【追記】サンプルを数行だけ改良して、ひよこ?がタイルの裏へ回れるようになりました🐤

  • @1997kyfkt201
    @1997kyfkt201 3 роки тому +6

    数学とプログラミングの基礎が学べる素晴らしい動画です。
    偶然にも中学生の子供が「JavaScript でゲームを作ってみたい」と言っていたので、丁度よかったです。

  • @EverydayUnity
    @EverydayUnity 3 роки тому +2

    このチャンネル好きです

  • @ちゃま-s5w
    @ちゃま-s5w Рік тому

    等角図、勉強になります。

  • @glikovsky
    @glikovsky 3 роки тому +1

    9:46 ハッピーバースデーのアレンジのようなBGM

  • @sawakkuma
    @sawakkuma 4 роки тому +2

    なるほどの連続です!何回も見直して理解を深めます!

    • @heron-no-suugaku
      @heron-no-suugaku  4 роки тому +3

      見直してもわからない所があれば、遠慮なく質問してくださいね!
      動画がガバっていることもあるので・・・(1敗)

  • @studio_shimazu
    @studio_shimazu 4 роки тому +5

    勉強になります。ありがとうございます。

    • @k.j8127
      @k.j8127 4 роки тому +1

      こんなところにスタジオしまづ!

  • @user-RaahNeko
    @user-RaahNeko 3 роки тому +1

    凄いチャンネルを発見してしまい興奮しています!最後の〆のところで50人登録っておっしゃっていますが、半年ちょっとでもう3万人ですね!凄い凄い!これから全部見ます!仕事で役に立つテクニック満載で非常にためになります!
    ところで、課題のところで「ガバ」って単語が出てきますが、バグみたいな意味でいいんでしょうか?(ガバガバのガバ?)
    あと、JavaScriptでゲームを作りながら実はオブジェクト指向プログラミングの概念がわかっちゃいますって感じの講座をお願いしたいです!

    • @heron-no-suugaku
      @heron-no-suugaku  3 роки тому +1

      ガバは「やらかし」「ミス」を意味するネットスラングです🐤(なお語源をたどっていくと……)
      しばらくはチャンネルの趣旨である「数学×プログラミング」の動画が主になると思いますが、いずれプログラミング主体の動画も作りたいですね。

    • @user-RaahNeko
      @user-RaahNeko 3 роки тому

      @@heron-no-suugaku ご返信ありがとうございます!応援しています!

  • @sinistergeek
    @sinistergeek 3 роки тому +1

    You are cool. learned alot and reviewed what i learned!!! Thank You

  • @poppohato1345
    @poppohato1345 3 роки тому

    いつも通りBGMが不穏で安心した

  • @東金-l2s
    @東金-l2s 3 роки тому

    素晴らしいですね

  • @HelloIamTheGuy
    @HelloIamTheGuy 3 роки тому +4

    原点からの floor(x) + floor(y) が小さい順にタイルを描画して、
    let max_distance = lengthX + lengthY - 1;
    for (int dist = 0; dist < max_distance; dist++) {
    for (int x=0; x= lengthX || dist-x >= lengthY) continue;
    tile[dist-x][x].draw()
    if (floor(player.x) === x && floor(player.y) === dist-x) player.draw()
    }
    }
    みたいな感じじゃダメですかね?
    でも、そうするとひよこの体がタイルからはみ出してる時、隣のタイルの上に描画されたりされなかったり問題があるのか……?
    ひよこの体の幅を考えて、タイルの当たり判定にある程度マージンがあれば大丈夫かな。
    難しい

    • @heron-no-suugaku
      @heron-no-suugaku  3 роки тому +1

      実は数日前にそれに気づいて、サンプルを書き直したのです🐤
      ご推察の通り、いくつかエッジケースはありますね(影が隠れる、ひよこがはみ出る、etc)

  • @amatumo8709
    @amatumo8709 3 роки тому +3

    すごくわかりやすい動画ありがとうございます。質問なのですが、クォータービュー上で弓矢のような放物線を描くにはどんなアルゴリズムが考えられますか?学生時代に実装しようとして挫折してしまいました、、、

    • @heron-no-suugaku
      @heron-no-suugaku  3 роки тому

      いったんクォータービューは置いといて、普通の空間(ユークリッド空間)で矢の動きを考えて
      その座標(x,y,z)を、 11:02 で紹介している式 xa+yb+zc(a,b,cはクォータービューを描くための2次元ベクトル、 8:45 の原点から生えてるやつ)
      を用いて変換すればいいですね🐤
      3次元だと話がややこしくなるので、ここではx座標を0に固定します
      例えば、矢の座標(0,y,z)を求めるには……
      www.wakariyasui.sakura.ne.jp/p/mech/rakutai/suihei.html
      この水平投射が使えそうです。
      そのままでは使えませんが、2つの軸をそれぞれ「矢の向きの軸」「重力の向きの軸」として抽象的に見ると
      まず重力の向きは-z軸が対応しそうですね。矢の向きは、y軸を対応させるのが一番簡単でしょう。
      対応を決めたら、↑のページで求めたxをy、yを-zとしてやれば、「y軸に並行に投げた矢の動き」が求まります。
      あとはいま求めた(0,y,z)を xa+yb+zc に代入すると、クォータービューのどこに矢を描けば良いかが求まります。🐤

    • @amatumo8709
      @amatumo8709 3 роки тому

      @@heron-no-suugaku めっちゃ早い返信ありがとうございます!返信を参考にしながら実装してみようと思います。ありがとうございます!!

  • @koolongkoolong
    @koolongkoolong 3 роки тому

    BGMの使い方とかドバーッすき

  • @まろまろカリス
    @まろまろカリス 3 роки тому

    0:44
    ここカカポ

  • @ttu4661
    @ttu4661 3 роки тому +9

    FFタクティクス思い出しました。こういう動画を見せると、学生の数学への抵抗感も減るんじゃないかと思いました。もっと早く出会いたかった…。

  • @maximilianocastillo4567
    @maximilianocastillo4567 3 роки тому

    I rlly enjoy this dud

  • @enikaita_mochi
    @enikaita_mochi 3 роки тому

    カメラ側からひよこよりも高いパネルがあった場合に、
    ひよこを消すor半透明にするという処理を入れれば何となくいけそうな気がする。
    ただ、それだけだと、ひよこがパネルの半分移動したときどうするの?ということにもなるのか・・・難しい。

  • @けけ-t7i2c
    @けけ-t7i2c 2 роки тому

    このプログラムのひよこをキャラチップに置き換えるとなるとどのようなプログラムになるのでしょうか?最近javascriptを始めたてで、、、。無知で申し訳ありません。

    • @heron-no-suugaku
      @heron-no-suugaku  2 роки тому +1

      ChickenDrawerクラスのdraw関数の中身を全部消して、image関数で画像を描けばできます🐤
      細かいやり方については、こちら↓が参考になるかと思います。
      qiita.com/SakaDKyo/items/7c3e766c7cbef7d452ac

    • @けけ-t7i2c
      @けけ-t7i2c 2 роки тому

      @@heron-no-suugaku ご丁寧にありがとうございます!

    • @けけ-t7i2c
      @けけ-t7i2c 2 роки тому

      @@heron-no-suugaku
      let chicken;
      let img;
      function preload() {
      img = loadImage(ひよこの画像)
      }
      class ChickenDrawer{
      /**
      * ひよこ?を描画するコマンド
      * @param {Vec2} pos 足元の位置ベクトル
      * @param {number} angle Z軸の角度
      * @param {number} animFrame アニメーションの何フレーム目を再生するか
      * @param {number} depth
      */
      constructor(x, y, image) {
      this.x = x;
      this.y = y;
      this.image = image
      }
      draw() {
      image(this.image, this.x, this.y, this.image.width, this.image.height);
      }
      }
      こういうことでは無いですよね。
      理解できていなくてすみません。

    • @heron-no-suugaku
      @heron-no-suugaku  2 роки тому +1

      @@けけ-t7i2c
      let img;
      function preload() {
      img = loadImage(ひよこの画像);
      }
      ↑を追加するのは合ってます。
      constructorを弄ってしまっていますが、何も弄らなくて大丈夫です(むしろ弄るとマズいです)
      上手くいかない理由は、せっかく読み込んだimgを使わずにthis.imageとしてしまっているせいかなと思います。
      追記:近々勉強会を行います。Zoomでリアルタイムにご相談いただけます。チャットだけでは分かりづらいところですから、ぜひ参加ご検討いただければと思います。🐤
      heron-no-suugaku.sakura.ne.jp/

    • @けけ-t7i2c
      @けけ-t7i2c 2 роки тому

      @@heron-no-suugaku 一定方向しか向きませんがなんとかキャラクターが動くことができました!ご丁寧にありがとうごさまいました。また機会があれば勉強会参加させて頂きます。

  • @CapGame_
    @CapGame_ 4 роки тому +9

    「メインループ」って古いのか…()

    • @heron-no-suugaku
      @heron-no-suugaku  4 роки тому +3

      ゲームエンジンが普及してから死語になっちゃいましたね・・

  • @Ag-gt8yk
    @Ag-gt8yk 3 роки тому

    裏に回ったらゲーム的に行くと消さなくていい気がします
    どっちかというと見せ方を変えたほうが
    ゲームっぽいですね
    よくあるポケモンの洞窟みたいに
    プレイヤーの周りを暗くして裏に回ったよって感じで見せたほうが
    プレイヤー位置もわかるのでユーザーが操作に困らなくて済みそうですね

  • @Hasasinful
    @Hasasinful 3 роки тому

    Çok teşekkürler. Tileset nasıl yapılır hep merak ediyordum. this.video = sugoi;

  • @gamanium2299
    @gamanium2299 3 роки тому

    Qバート作れるじゃん!

  • @ar951
    @ar951 3 роки тому +2

    どうでもいいけどvertexの複数形はverticesらしい

  • @やすけさん
    @やすけさん 3 роки тому +5

    ぼくには わからないが ゆいいつわかったのは こいつはすごい ということです

  • @typumpkin1253
    @typumpkin1253 2 роки тому

    ヒヨコちゃんがまさか絵ではなかったと

  • @52te62
    @52te62 3 роки тому

    一応余接は大学の範囲ですね
    多分数学3まで履修してる人は知ってる人がほとんどだと思いますが

  • @はるるたけべえ
    @はるるたけべえ 3 роки тому +6

    ここまで見てきたけど、イントネーションが気になって笑えてなにも頭に入ってこないw

  • @youtubefan1822
    @youtubefan1822 3 роки тому

    登録しました宜しくお願いします

  • @kskj5672
    @kskj5672 3 роки тому

    なんでプログラミングの世界だけ「矩形(くけい)」という死語で呼ぶのでしょうかね? 現代の小中学校では「長方形」としか習わないのに。

    • @大村むら
      @大村むら 5 місяців тому

      私が昔先輩から教わったところでは、プログラミング畑では長方形と矩形は別のものだそうです。長方形のうち、水平であるものを矩形と呼ぶ慣習があるとか。
      ただ検索しても出てこないので真偽はちょっと怪しいです。その職場だけのローカルな慣習か、あるいは先輩が私に嘘を教えて可笑しんでいただけかも知れません。