- Web上で動作する物理エンジンです
- TypeScript、JavaScriptで記述されています
- ※エンジンの最適化がされていないため、オブジェクトを生成しすぎると重くなります
- この物理エンジンはPDB法による衝突判定を行い演算しています
- デモサイトから誰でも自由に利用可能です
- このコード又はプログラムを利用する場合はLICENSEをお読みください
- デモサイトでの使い方を1番上から説明しています
- 操作の一部はタッチパネルにも対応しています
- 物体(円、四角、ロープ)はエンティティーで構成され、全ての物体の最小単位になります
- 地面のみエンティティーで構成されていません
- 物体は上下左右10000pxを超えると負荷削減のため削除されます
- エンジンが停止状態でTキーを入力すると1フレームずつ進められます
- 重力加速度を設定します
- エンティティーで構成される物体(質量がある場合のみ)がこの影響を受けます
- 摩擦係数を設定します
- エンティティーの移動、回転に影響します(エンティティーの衝突には影響しません)
- 負の値を設定すると徐々にエンティティーが加速します
- 描画の拡大と縮小を設定します
- キャンバスの中央を中心として拡大縮小します
- 物理演算の処理速度を変更します
- 負荷が高い場合処理速度が上がらない場合があります
- デバッグモードの有効/無効を切り替えます
- 有効にすると座標表示、エンティティーの速度ベクトルが表示されます
- 物体の通過後を表示します
- 100ミリ秒(初期設定)ごとに履歴が残ります
- トラッキングが多すぎると動作が重くなる可能性があります
- トラッキングされたデータを全て削除します
- 地面以外の全ての物体を削除します
- 地面を含む全ての物体を削除します
- トラッキングデータは削除されません
- 演算の開始と停止を切り替えます
- 停止した場合、物体処理は止まりますが、描画処理は継続されます
- 現在の物理演算状態をローカルストレージ上に保存します
- データをJSON形式で保存・共有する場合は後述のエクスポートを使用する必要があります
- 保存されたデータを読み込みます
- 保存後の状態は削除されます
- 保存データが存在しない場合空のデータとして読み込まれます
- 保存されているデータをエクスポートします
- 保存を先に実行されていないとエクスポートされません
- JSON形式で保存されます
- エクスポートされたデータを読み込みます
- 保存されたデータが破損している場合、正常に読み込み、演算ができない可能性があります
- ツールを選択します
- 選択している間ツールの操作が有効になります
- 種類は以下の通りです
- 円: 標準的な円 一つのエンティティーで構成されます
- 四角: 擬似的な四角(完全な四角ではありません) 4つのエンティティーで構成されています
- ロープ: 擬似的なロープ(完全なロープではありません) 設置には2点間をクリックする必要があります 長さに応じて必要なエンティティーが設定され構成されています
- 地面: 標準的な地面 重力の影響は受けません 設置には2点間をクリックする必要があります 完全に固定された平な面です
- 曲線: 曲がった地面 重力の影響は受けません 設置には3点間をクリックする必要があります 完全に固定された曲線です
- ブースター: 設定された速度方向へ接触した物体を加速、減速させます
- アトラクター: 設定された速度で設置点から指定された半径の中で引力、斥力を発生させます
- 移動: エンティティーを右クリックを押している間、任意の位置に移動できます
- 接続: エンティティー同士を接続します 二つのエンティティーをクリックする必要があります
- 接続解除: 接続の逆の操作をします 接続された二つのエンティティーをクリックする必要があります
- 操作: クリックして選択したエンティティーをWASDで操作します
- 画面移動: WASDで描画している場所を移動します デバッグモードを使用すると位置が確認できます
- エンティティーのサイズの半径
- 地面の場合は地面の幅に影響します
- 物体の質量を設定します
- 地面は質量の影響を受けません
- 質量を0に設定することで物体を常に停止させることができます
- エンティティーの衝突の跳ね返りやすさを設定します
- 特に理由がない場合は0.5から1の間に設定してください
- 0に設定すると物理演算がされません
- エンティティー生成時の初速度を設定します
- 物体の色を設定します
- 画像が設定されている場合、この設定は無視されます
- 物体にサブカラーが存在する場合にこの設定が使用されます
- この機能は危険です
- 設定したコードがアップデート時に実行されます
- object変数からコードが設定された物体にアクセスできます
- 物体に設定する画像URLやファイルを設定します
- URLとファイルは後から設定した値が優先されます
- 画像は自動的にリサイズされます
- 設定されたURLやファイルの値をリセットします
- 15秒おきに保存データを作成します
- 背景の色を設定します
- 背景画像が設定されている場合この設定は無視されます
- 背景に設定する画像URLやファイルを設定します
- URLとファイルは後から設定した値が優先されます
- 画像は自動的にリサイズされます
- ※ Node.js、NPMがインストールされている必要があります
git clone https://github.com/Taka005/JSEngine.git
を実行してレポジトリをクローンしますnpm i
を実行して依存関係をインストールnpm run bundle
を実行してコンパイル- 正常にビルドされるとpublicフォルダの中にEngine.jsが生成されます
- public/index.htmlを開いてデモサイトを起動できます