H5小游戏 活跃维护

raycast.js

emre-aki/raycast.js

一个用 JavaScript 从零编写的高级光线投射引擎,完全无依赖

113
Stars 标星
11
Forks 分支
4
Watchers 关注
4
Open Issues
JavaScript
主要语言
GPL-3.0
开源协议
11.8 MB
仓库大小
6 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:emre-aki/raycast.js
git clone https://github.com/emre-aki/raycast.js.git
git clone git@github.com:emre-aki/raycast.js.git
README.md master

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

RayCast.js 是一种实现曾经流行的三维渲染技术的方法,称为 ray-casting,该技术曾在1991年流行电子游戏《Wolfenstein 3D》中广为人知。

图形在 640x480 的 HTML5 画布中渲染,使用 2d 图形上下文。渲染程序的核心由恒定 Z 值的纹理映射墙体垂直线组成,以及平面表面的透视校正纹理映射。使用了离屏帧缓冲区以优化每像素渲染。

设置

需求

  • Node.js
  • ejs
  • express

克隆仓库后,导航到根文件夹并使用 npm 安装依赖项。

$ npm install

一旦所有依赖项安装完成,你就可以用以下命令启动 Express 开发服务器:

$ npm run start

控制

操作 按键
Movement W A S D
自由视角 ↑ → ↓ ←,或者鼠标*
改变高度 Q E,或者MSW*
射击 ⎵,或者LMB*
Interact ⏎
切换全屏模式 F

* 您应先点击 LMB 在 canvas 上以激活鼠标控制。

实时演示

您可以在这里查看实时演示,并在这里关注最新更新!

地图编辑器 GUI

即将推出...

功能包括

  • 相机自由度 "1.5" 度(俯仰通过一种称为 y-剪切的过程实现)
  • 不同水平的相机高度
  • 完全贴图的墙壁、地板和天花板
  • Alpha 混合
  • 户外空间的 360° 视差天空
  • 光线衰减(基于距离/深度的阴影)
  • 自定义碰撞系统,还支持与非轴向对齐几何体的碰撞,例如斜墙
  • 门
  • 斜墙
  • 小地图显示

待办事项

  • 游戏中的二维精灵 thing
  • 半透明表面
  • 倾斜表面
  • 不同宽度、高度和深度的方块 (free-form block)
本站来源与版权声明
  • 本文标题:raycast.js - 一个用 JavaScript 从零编写的高级光线投射
  • 本文链接:https://www.cn121.com/h5game/emre-aki-raycast-js.html
  • 原项目:emre-aki/raycast.js 版权归原作者 emre-aki 及贡献者所有
  • 收录信息:本站于 2026-10-04 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 GPL-3.0(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 emre-aki/raycast.js。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。