在彩虹赛道上躲避陨石的像素小人
橙色像素小人在太空中的彩虹地板上飞奔,无缝循环地躲避陨石和光束。Claude Opus 5.5 根据一段很长的日文提示词,在五分钟内做成一个 Canvas 2D 单文件 HTML。
提示词
原文引用可直接使用
请使用原生 JavaScript 和 Canvas 2D,创建一个单一的自包含 HTML 文件,内容是一段动画:橙色像素角色在宇宙空间的彩虹地面上以超高速奔驰,并持续帅气地躲避接连袭来的陨石与光束。外部资源、库、网络请求一概不得使用。无需操作,作为角色自动持续躲避的演示,使其无缝循环。 渲染 - 把一切绘制到 160x90 的固定逻辑分辨率的离屏画布上,再将其复制到全屏的显示画布。放大率是能纳入窗口的最大整数倍,并置于中央。四周空白用黑色填满。设置 imageSmoothingEnabled = false,CSS 指定 image-rendering: pixelated。 - 所有绘制都吸附到逻辑画布上的整数坐标。不使用子像素位置、抗锯齿、渐变、shadowBlur、旋转绘制。 - 使用约 32 色的固定调色板:宇宙背景用黑〜深藏青·紫系,角色用橙色系 3 个层次(本体在 #CD7B5E 附近、明亮的高光、暗的阴影)以及眼睛的黑,彩虹地面用 7 色(红·橙·黄·绿·浅蓝·蓝·紫)以及各自的暗色,陨石用岩石色·熔岩色,光束用白·青色·品红。每一个像素都取自这一调色板的颜色。 角色 - 精确再现下面的 12x8 像素剪影(1 格=1 个逻辑像素): - 躯干是宽 8×高 8 的矩形(列 2〜9)。 - 手臂在躯干左右以宽 2×高 2 伸出(列 0〜1 与列 10〜11,行 2〜3)。 - 眼睛是 2 个黑色的 1x1 像素,在行 1 的列 3 与列 8。 - 腿在行 6〜7 有 4 条,每条宽 1(列 2·4·7·9)。腿与腿之间用背景色挖空。 - 不要单色平涂,在上边和左边放 1px 的高光,在下边和右边放 1px 的阴影色,做出 16-bit 式的立体感。 - 奔跑动作是把 4 条腿以每次 2 条交替上下的 4 帧循环。按照速度加快这个循环。 - 将姿势参数化(上下弹跳、前倾、挤压&拉伸、手臂的上下)。挤压&拉伸只通过以整数像素为单位把宽和高改变 1〜2px 来表现。参数平滑插值,同时每一帧都量化到像素网格,使即便是 60fps 的循环也看起来像 12fps 前后的点阵动画。 彩虹地面 - 角色在画面偏左 1/3 附近向右奔跑的横向卷轴布局。地面是由 7 色横条组成的彩虹带(每种颜色 1〜2px),延伸着横过画面,并缓缓起伏(用正弦波上下弯曲)。 - 在地面的纵向上放入固定间隔的分隔线(暗色的竖线),并按照速度向左高速滚动,以制造疾驰感。 - 从地面的下沿,彩虹色的光粒向后方洒落,表明地面悬浮在宇宙中。 - 时而在地面上做出跳台(向上的弧线)和断开(间隙),制造跳跃的看点。 障碍 - 陨石:大·中·小 3 种尺寸。点阵画的岩石(轮廓线+2 级阴影+熔岩色的裂缝)从画面右上方斜向飞来。身后拖着由熔岩色→暗色变化的火焰尾。被躲开的陨石不与地面碰撞,要么穿出画面,要么在身后碎成碎片。 - 光束:出现之前作为预告显示约 0.5 秒的 1px 闪烁线(品红),其后射出由白色核心+青色外缘构成的、粗 3〜5px 的光束,水平或斜向照射。照射期间端部滋滋地发颤。 - 障碍不是随机的,而是把预先定好的「攻击模式」按顺序播放,并设计成整体在固定的一段时间内循环(例:单发陨石 → 三连陨石 → 低光束 → 高光束 → 光束与陨石的复合 → 大陨石+地面的间隙)。 回避动作 - 跳跃:用挤压蓄力 → 用拉伸起跳 → 在空中蜷缩 → 落地时挤压+不是尘烟而是彩虹色火花。 - 二段跳:在空中瞬间静止后再加速。角色周围一道 1px 的彩虹色环向外扩散。 - 滑行:把高度挤压到接近一半,以低姿态滑行,从与地面接触的面迸出火花。 - 冲刺回避:只在一瞬间大幅提高速度,并在后方留下 3〜4 个残影。残影按顺序使用彩虹的 7 色,并逐步消逝到调色板的暗色。 - 为每一种攻击模式分配看起来最帅气的回避动作。回避要在最后可能的时机(擦身而过)进行。 状态机 - 对每一种攻击模式重复:RUN(通常疾驰)→ WARN(预告显示,把眼睛移动 1px,使角色像是瞬间看向前方)→ DODGE(回避动作)→ NEAR_MISS(演出)→ 回到 RUN。 - 在循环的最后放入 BOOST(全力加速)→ WARP(整个画面一瞬间从白→彩虹色闪光),并使其就这样自然地衔接到开头的 RUN。 - 在关键帧之间对姿势和摄像机的参数施加缓动。 摄像机工作 - 把摄像机当作逻辑坐标上的整数偏移来处理。不使用缩放或旋转,只用位置的移动和晃动来表现。 - 跟随:带阻尼地滞后跟随角色的上下移动,跳跃时稍迟一点抬起。 - 前瞻:速度越高,就越让摄像机向行进方向先行若干 px,使角色被压向画面左侧,从而产生加速感。 - 顿帧:在擦身而过的瞬间,只把整体停止 3〜4 帧,然后做约 0.3 秒的慢动作(抽掉一部分更新步),再回到通常速度。 - 震动:大陨石通过时,或光束开始照射时,做 1〜2px 的画面震动。震动从定好的模式数组中读出,不使用随机数。 - BOOST 期间把摄像机略微放低,并增大地面所占的面积,以强调速度感。 制造疾驰感的效果 - 多层视差:远星(几乎不动的 1px 点)、中景的星(按照速度横向伸成 2〜6px 的线)、近景的速度线(亮色的横线高速横穿画面),共 3 层。 - 使速度线的条数和长度与速度成正比,并在 BOOST 期间达到最大。 - 在背景里用点阵画放置 1〜2 个大的行星或星云,并极慢地滚动,以产生尺度感。 - 擦身而过时,用 1px 的白勾勒角色的轮廓,并只让靠近陨石·光束的那一侧瞬间发光。 - 落地、滑行、冲刺的火花,陨石的尾,碎片,以及从地面洒落的光粒,全部用同一个粒子系统处理。 粒子系统 - 以池化方式做的、无分配的粒子系统:事先分配并复用。 - 每个粒子按种类持有颜色过渡表(调色板的索引序列),并按照寿命逐步改变颜色直到消失(例:火花是白 → 黄 → 橙 → 暗色,残影是虹色 → 暗色)。 - 绘制时把粒子位置吸附到网格。 - 以 60Hz 的固定时间步更新,绘制用 rAF 进行。循环内的对象创建必须为零(包括数组、闭包、字符串拼接的创建)。 场景 - 背景是深邃的宇宙:从黑到藏青的阶梯式色带(用仿色表现颜色的交界)、闪烁的星、远处的行星。 - 让明度差明确,使角色、障碍、地面的颜色不埋进背景。无论画面多么喧闹,角色的剪影都要一眼就能读出。 质量标准 - 在任何窗口尺寸下像素都清楚,循环不中断,60fps 稳定,剪影易读。 - 看起来必须像精致的 16-bit 时代动作游戏的演示画面,而不是被缩小的矢量图形。 - 「快」「在最后一刻躲开」「帅气」这三件,要在每一次回避中传达出来。
译自日语原文。提示词来源
作品信息
- 类型
- 视频
- 迭代方式
- 未说明
- 发布时间
- 2026年9月22日
来源
- X@riku720720https://x.com/riku720720/status/21025150551160631442026年9月22日 · 1,085 个赞



