<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>游戏手记 on BearIsle熊岛</title>
    <link>https://bearisle.org/notes/</link>
    <description>Recent content in 游戏手记 on BearIsle熊岛</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 06 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://bearisle.org/notes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Metroid游戏跟练</title>
      <link>https://bearisle.org/notes/2026-08-05-metroid-practice/</link>
      <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://bearisle.org/notes/2026-08-05-metroid-practice/</guid>
      <description>&lt;h2 id=&#34;更新记录&#34;&gt;更新记录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2026-08-05：开始跟练 Metroid&lt;/li&gt;
&lt;li&gt;2026-08-06：实现如下功能
&lt;ol&gt;
&lt;li&gt;角色水平移动&lt;/li&gt;
&lt;li&gt;加入跳跃和重力&lt;/li&gt;
&lt;li&gt;添加可调节的跳跃力度和重力&lt;/li&gt;
&lt;li&gt;添加射击以及冷却功能&lt;/li&gt;
&lt;li&gt;实现固定方向射击&lt;/li&gt;
&lt;li&gt;实现发射方向跟随鼠标移动变化，标准化向量&lt;/li&gt;
&lt;li&gt;实现子弹生成&lt;/li&gt;
&lt;li&gt;设置子弹初始位置&lt;/li&gt;
&lt;li&gt;实现子弹移动&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;资源管理&#34;&gt;资源管理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;文件名和节点的命名&lt;/p&gt;
&lt;p&gt;通常建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件名：&lt;code&gt;lower_snake_case&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;节点名：&lt;code&gt;PascalCase&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;脚本变量：&lt;code&gt;snake_case&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;类名：&lt;code&gt;PascalCase&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tscn和实例化&#34;&gt;.tscn和实例化&lt;/h3&gt;
&lt;p&gt;把 &lt;code&gt;player.tscn&lt;/code&gt; 实例化到关卡后，关卡里保存的是对玩家场景的引用。把脚本挂在 &lt;code&gt;player.tscn&lt;/code&gt;的根节点 &lt;code&gt;Player&lt;/code&gt; 上，那么这个场景实例化出来的所有玩家，默认都会运行同一个脚本。&lt;/p&gt;
&lt;p&gt;但是，每个实例的运行状态是独立的。虽然它们共用同一份脚本代码，但不是共用同一个对象。&lt;/p&gt;
&lt;p&gt;一般会把“所有玩家都应该具备的功能”写进 &lt;code&gt;player.tscn&lt;/code&gt; 的脚本，把“这个玩家单独的参数”在关卡实例上调整。&lt;/p&gt;
&lt;h2 id=&#34;vector2&#34;&gt;Vector2&lt;/h2&gt;
&lt;p&gt;二维数据内置类型。&lt;/p&gt;
&lt;p&gt;表示速度时。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velocity &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Vector2&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;表示每秒向右移动一定距离。&lt;/p&gt;
&lt;p&gt;更常见的写法是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velocity &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; direction &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; speed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; direction &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Vector2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;RIGHT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; speed &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velocity &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; direction &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; speed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velocity &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Vector2&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也就是向右移动，速度为 200。&lt;/p&gt;
&lt;h2 id=&#34;为什么由-level-创建子弹&#34;&gt;为什么由 Level 创建子弹&lt;/h2&gt;
&lt;p&gt;玩家按下射击键后，子弹需要被添加到游戏场景中。&lt;/p&gt;
&lt;p&gt;如果把子弹添加为 Player 的子节点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Level
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── Player
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── Bullet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;子弹仍然属于 Player，可能受到玩家移动、旋转或删除的影响。&lt;/p&gt;
&lt;p&gt;更合理的结构是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Level
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── Player
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── Bullet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;子弹和玩家都属于 Level。这样子弹射出后可以在关卡中独立移动，不会继续跟随玩家。&lt;/p&gt;</description>
    </item>
    <item>
      <title>游戏设计笔记模板</title>
      <link>https://bearisle.org/notes/2026-07-24-game-design-note/</link>
      <pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://bearisle.org/notes/2026-07-24-game-design-note/</guid>
      <description>&lt;p&gt;这是一篇游戏设计笔记模板。&lt;/p&gt;
&lt;h2 id=&#34;问题&#34;&gt;问题&lt;/h2&gt;
&lt;p&gt;我现在想研究或解决什么问题？&lt;/p&gt;
&lt;h2 id=&#34;观察&#34;&gt;观察&lt;/h2&gt;
&lt;p&gt;我从游戏、文章、视频或自己的实验里观察到了什么？&lt;/p&gt;
&lt;h2 id=&#34;想法&#34;&gt;想法&lt;/h2&gt;
&lt;p&gt;这些观察能转化成什么设计想法？&lt;/p&gt;
&lt;h2 id=&#34;可以尝试的小实验&#34;&gt;可以尝试的小实验&lt;/h2&gt;
&lt;p&gt;下一次做原型时，可以验证什么？&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
