Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ _No unreleased changes yet._
## [v0.5.0] - 2025-11-25

### Added
- Scratch「イベント/このスプライトが押されたとき」Unit を追加しました
- ブロックモードと unityroom モードの違いを説明するドキュメントを追加しました
- 背景を切り替えるブロックを追加し、StageData の背景リストからインデックス指定で変更できるようにしました
- 迷路サンプルのゲームクリア演出を拡充し、StopAll → UI 表示 → Finish までの流れを整理しました

### Changed
- Actor の向きと見た目の回転の扱いを整理し、初期状態で右方向に移動するようにしました
- ブロックモードの角度仕様(0=上, 90=右, 180=下, 270=左)をドキュメントに反映しました
- 色に触れた判定のサンプリングを見直し、境界の色も検出しやすくなるよう改善しました
- Speech bubble の反転処理を調整し、左右向きでの表示崩れを防止しました

### Fixed
- SetDirection() 呼び出し時に RotationStyle.AllAround の Actor が正しく見た目も回転するように修正しました
- Actor の初期向きが上方向になっていた問題を修正しました
- StopAll が coroutines を正しく停止するよう `flow.StopCoroutine(false)` を用いる実装へ修正しました
- Actor のリセット時にエフェクトが残らないよう、初期化タイミングの処理を修正しました

## [v0.4.0] - 2025-11-23

Expand Down
20 changes: 20 additions & 0 deletions Docs/BlockList.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Block List

カテゴリ別に代表的なブロックと補足をまとめます。Scratch 互換の文言を基準にしています。

| カテゴリ | ブロック名 | 機能 | 備考 |
| --- | --- | --- | --- |
| 動き | MoveSteps | Actor を n 歩動かす | 1 歩 = 1px。ステージ境界でクランプと反射を実施。 |
| 動き | TurnRight / TurnLeft | 指定角度だけ回転する | ブロックモードの角度系(上=0°/右=90°)を維持。 |
| 動き | GoTo | 位置を指定して移動 | マウス座標や他 Actor へのジャンプに対応。 |
| 見た目 | Say / SayTimed | 吹き出しを表示 | ActorPresenter 経由で吹き出し UI を更新。 |
| 見た目 | SwitchCostume | コスチュームを切り替える | `CostumeIndex` を ActorState に設定し Presenter が反映。 |
| 見た目 | SetBackgroundByIndex | 背景をインデックスで変更 | **New**。StageData の背景リストから切り替え。 |
| 音 | PlaySound | サウンドを再生 | 音量や再生位置はサービスを介して管理。 |
| 調べる | TouchingColor | 指定色に触れたか判定 | 色判定精度を改善。境界の色も検出。 |
| 制御 | StopAll | 全スクリプトを停止 | `flow.StopCoroutine(false)` を利用し ScriptThreadManager と連動。 |
| 制御 | WaitSeconds | 指定時間待つ | ScriptThreadManager 上で待機スレッドを管理。 |
| 変数 | SetVariable / ChangeVariable | 変数を設定・加算 | `FUnityVariableService` を介して管理。 |
| 変数 | ShowVariable / HideVariable | 変数表示を切り替え | UI 上の変数表示パネルを制御。 |

> 表にないユニットの詳細は [Docs/VS_Scratch_Mapping.md](VS_Scratch_Mapping.md) を参照してください。
42 changes: 42 additions & 0 deletions Docs/InstallGuide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Install Guide

FUnity をプロジェクトへ組み込む手順と、セットアップを自動化するツールの使い方をまとめます。

## 1. パッケージ導入
1. Unity の Package Manager で **Add package from git URL...** を選択します。
2. `https://github.com/oco777/FUnity.git#v0.5.0` を入力してインポートします。
3. 依存パッケージ(Visual Scripting など)が自動で追加されます。

## 2. プロジェクト生成ウィザード
`FUnityProjectCreatorWindow` を使うと、新規プロジェクトに必要なアセットをまとめて生成できます。

1. メニュー **FUnity/Create/Project Creator...** を開きます。
2. 保存先を選び、**Create** を実行すると以下が自動生成されます。
- `FUnityProjectData`(プロジェクト設定)
- `FUnityStageData`(ステージ背景と論理サイズ)
- `PanelSettings` や UI テーマ(不足していれば同梱テンプレートから生成)
- `FUnityActorData_Fooni` とサンプル Macro
3. シーンに `FUnityManager` を配置し、生成された `FUnityProjectData` を参照に設定します。

## 3. ActorData / ProjectData の構成
- **FUnityProjectData**
- モード設定(Block Mode / unityroom モード)
- 既定の StageData / PanelSettings / UI テーマ参照
- サンプル背景リストとターゲット FPS
- **FUnityActorData**
- Sprites リスト(コスチューム)と初期インデックス
- Visual Scripting Macro 参照と吹き出し設定
- 移動速度や当たり判定設定
- **FUnityStageData**
- 背景スプライトのリスト
- ステージ論理サイズ(例: 480x360)

## 4. シーンへの適用
1. `FUnityManager` をシーンへ 1 体追加します。
2. `FUnityProjectData` を `FUnityManager` の参照に割り当てます。
3. 再生すると `FUnityManager` が StageView / ActorView を生成し、`ActorPresenterAdapter` と `VSPresenterBridge` を通じて Macro を実行します。

## 5. トラブルシュートのヒント
- UI が表示されない場合は、`FUnityProjectCreatorWindow` を再実行して PanelSettings とテーマが生成されているか確認してください。
- Macro を差し替えた後は、`FUnityActorData` の ScriptGraph 参照が切れていないかを確認します。
- Block Mode の角度がずれる場合は、`ScratchUnitUtil.GetDirectionDegreesForCurrentMode` を利用するユニットが最新か確認してください。
40 changes: 40 additions & 0 deletions Docs/Overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Overview

FUnity は「Scratch の楽しさを Unity の表現力で広げる」ことを目的に設計された教育向けツールキットです。Scratch 互換のブロックモードを備え、既存の Unity プロジェクトへ追加するだけで、Actor(キャラクター)とステージを用いた学習体験を提供します。

## コンセプト
- **Scratch ライクな操作感**:カテゴリやブロック名を合わせ、子どもが違和感なく移行できる UI を目指します。
- **MVP アーキテクチャ**:Model(ScriptableObject とランタイム状態)、View(UI Toolkit)、Presenter(状態更新)の三層で責務を分離し、テストしやすい構造を維持します。
- **Unity との親和性**:UI Toolkit / Visual Scripting / UPM と連携し、既存資産やエディタ拡張と共存できる形で提供します。

## Scratch との互換性
- ブロックカテゴリは「動き/見た目/音/調べる/制御/変数」を用意し、Scratch の代表的なブロックを Visual Scripting Unit として提供します。
- 停止ブロックやクローン、背景切り替えなど、Scratch の学習パターンを維持したまま Unity の描画と入力に接続します。
- ActorState の `CostumeIndex` を Presenter が適用し、`ActorPresenter.ApplyCostumeFromState()` → `ActorView.SetSprite(Sprite)` の順で UI へ反映することで、Scratch の「コスチューム」切り替えと同等の体験を実現します。

## アーキテクチャ概要
```
+-----------------------+ +---------------------+
| ScriptThreadManager | <----> | VSPresenterBridge |
+-----------+-----------+ +----------+----------+
^ |
| registers/stop | calls presenter methods
| v
+-----------+-----------+ +---------------------+
| FUnityManager | -----> | ActorPresenter |
+-----------+-----------+ +----------+----------+
| |
v v
+-----------------------+ +---------------------+
| StageView | | ActorView |
+-----------------------+ +---------------------+
```
- **Manager**:`FUnityManager` が Stage と Actor を初期化し、Presenter と View を結線します。
- **ActorView**:UI Toolkit 上のスプライトや吹き出しを描画する View 層。Presenter からの命令のみで更新します。
- **Stage**:背景やステージサイズを管理し、背景リストからの切り替えも担当します。
- **ScriptThreadManager**:Scratch のイベント開始時にスレッドを登録し、「すべてを止める」などの停止ブロックを管理します。

## Block Mode
- Visual Scripting の Unit を Scratch 表記で提供し、`FUnity/Scratch/<カテゴリ>` に分類しています。
- 角度はブロックモードに合わせて「上=0° / 右=90° / 下=180° / 左=270°」を維持します。
- ScriptMachine に Macro を割り当てるだけでブロックモードを利用でき、C# とのハイブリッドも可能です。
Loading