ããããžã§ã¯ãïŒNeithãéããã¹ããã¬ã€ãã¿ããªã§äœãã²ãŒã å¶äœã4/24ïŒéïŒ8æ¥ç®ã
â ä»åãã£ãäº
ä»åã¯ä»¥äžã®åŠçãäœã蟌ã¿ãŸããïŒ
ã¹ããŒãªãŒåºå®ã€ãã³ãã®çºçåŠç
è²æã¡ãã¥ãŒç»é¢ã®é£å
ã¢ã«ã«ã¹ãã©ã®ã¹ããŒã¿ã¹ç¢ºèªæ©èœ
ãäŒæ©ãã³ãã³ãã®å®è£
ç¹èšå€±ææã®ããã«ãã£åŠç远å
æŠéã·ã¹ãã ã®GridMapçæããžãã¯ãã¹ã
â å®è£ éšåã®ãã¹ã
â ïŒã¿ãŒã³éããã¹ã
å°ãé·ãã®åç»ã§ããã
å®éã®åããèŠãŠããã ãããšã²ãŒã ããããå¢ããŠããã®ãäŒããããšæããŸãïŒ
â æŠéãããçæããžãã¯ãã¹ã

â åéäžã®ã¢ã€ãã£ã¢
â ãå€ä»£ãšãžããç·šãã§çºçããããªã€ãã³ã
ïŒäŸïŒãã©ãããã§ã®éé
·ãªä¿®è¡ããã€ã«å·ã§ã®äºæãã¬ãããã³ã° ãªã©ïŒ
â»æéã¯ãããŸããïŒçããã®èªç±ã§ãŠããŒã¯ãªçºæ³ããåŸ
ã¡ããŠããŸãã
⡠䞻人å
¬ã»ãã€ãã®ãã¹ãã«ãïŒ4/28(ç«)ãŸã§ïŒïŒ
ïŒäŸïŒãã¡ã€ã¢ããŒã« / å°çšïŒ2ãã¹å
ã®äžäœ / 广ïŒå¯Ÿè±¡ã«å°ãã¡ãŒãžïŒ
â»çéããã¡ãã£ãšç¬ãããã¿ã¹ãã«ãŸã§ã
ã©ããªã¢ã€ãã£ã¢ã§ã倧æè¿ã§ãïŒ
ããã°ãã¯ããŸããã§ãïŒ
ååã¯æ®æ¥ã«è¿œãããªãããã
ãªããšãç¹èšã·ã¹ãã ã®åºç€ãäœãäžãããã€ãã
ããã§ãŠãããæé·ã®åºç€ã¯ç€ç³ã«æŽã£ãâŠâŠãã«æããŸãããð
ããããåœŒå¥³ãæ§ç¯ããªããã°ãªããªãã·ã¹ãã ã¯ã
ãŸã ãŸã å±±ã®æ§ã«ãã³ãç«ã£ãŠããŸãã
ã©ã³ãã çºçã€ãã³ããäœåå埩ã·ã¹ãã ãã¢ã€ãã ã®å®è£ ããããŠæé£é¢ã®æŠéã·ã¹ãã âŠâŠïŒ
æ³åããã ãã§ãé ããã³ã¯ããããªãã®è€éãªããžãã¯ã®æ³¢ã«ã
ãã€ãã¯ã©ãç«ã¡åãã£ãŠããã®ãïŒ
çœç±ã®éçºã¹ããŒãªãŒã第8æ¥ç®ãããããéå¹ã§ãïŒïŒïŒ
äºäººã®è¶çª
ð§ä»æ¥ã®äœæ¥çšBGM
Tipsy_DanceïŒäœïŒç·šïŒæ² ïŒããª
ãæ°æé³æ¥œé¢š/é å Ž/èžããTipsy DanceãããªãŒBGMã

ããããããŸããïŒ
ãªã¬ã ããããã€ã©æ§ã ïŒ
ã¿ããªãæé£¯ã¯ãã£ããé£ã£ãŠããïŒ
æããã¡ãããšé£¯ãé£ããªããšãå
æ°ã«äžæ¥åããªããããªïŒã

ããã
âŠè³ãçããªã話ãã
ããŠã仿¥ããéçºããããã2é±éç®ã«çªå
¥ãã
ããããã¯äžæ°ã«å
容ãé£ãããªããšæãããã
ã¿ããªã©ããæ¯ãèœãšãããã«ã€ããŠæ¥ãŠãïŒã

ãããããããäžé±éçµã£ã¡ãŸã£ãã®ãâŠæ©ãããã ãªã
ããã§ã1ãæã®ç· ãåãã«ã¯éã«åããããªã®ãïŒã

ãæ£çŽãåãããªããâŠã
ã宎ãã®ã¢ã»ããã䜿ã£ãŠããé¢ä¿ã§ã
æŠéã·ã¹ãã ãšãã¯å€åãŒãããèªäœããããšã«ãªãã ããããã

ãâŠãšã¯ãããç§ããã æãããããŠåŸ
ã£ãŠãèš³ãããªããïŒ
è£ã§ã¯Claudeããã«é Œãã§ã
æŠéã·ã¹ãã ã®ã³ãŒããçµãã§ããã£ãŠãããšããããã

ããã£ãäžå¿æºåã¯çã ãšé²ããŠãã£ãŠããã ãªãã

ããŸããâŠã
ã§ããæžããŠããã£ãã³ãŒããèªãã§ãæ£çŽãã£ã±ããã
é£ããããªæè¡ããŠããçãã§âŠãã

ãã·ãã¥ã¬ãŒã·ã§ã³RPGã«é¢ããŠã¯ã
ç§ãããããéçºã®ç¥èããªãã®ã
ã ãããããã¿ããªãšäžç·ã«å匷ããŠãããã°ãããªãšæã£ãŠãããã

ãããã ãªïŒ
å°æ¥ãç»é¢ã®åããã®ããŸãããã£ããã·ãã¥ã¬ãŒã·ã§ã³RPGãäœããããããªãããªã
ãã®ããã®éæšãšããŠã俺ãã¡ã¯ããã«ãã£ãããšè»è·¡ãæ®ããŠããããïŒã
ç¹èšã·ã¹ãã ã®ç·ä»äžã(20:00-20:10)

ãããŠã仿¥ã¯ãããªãæšæ¥äœã£ãç¹èšã·ã¹ãã ã®ä»äžãã«åãæããããïŒã

ãã¹ããŒãªãŒå·çã¯ä»æ¥ã¯è¯ãã®ãïŒã

ãããâŠæšæ¥ã®æ§åãèŠãéããã®ïŒæéã¯ã·ã¹ãã éçºã«åããªããšãšãŠããããªããã©éã«åããªãæ°ãããã®ã

ãâŠã¡ãã£ãšãºã«ããããããªããã©ãã¹ããŒãªãŒå·çã¯ç§ã®è¶£å³ãšããŠè£ã§é²ããŠãããã
å
ã
ããè©±ãæžãã®ã¯å¥œãã ããã

ããŸããäŒç»çã«ã¯ã°ã¬ãŒã ãâŠãã£ãããªãã¿ããªã«æ¥œããéãã§æ¬²ããããªïŒ
ãªã¬æ§ã¯ã¢ãªã ãšæããïŒã

ãããããšãã
ããããã匵ãåã£ãŠäœæ¥ãé²ããããã
ãŸãã¯ãç¹èšã®åå²ãæŽçããŠãããïŒã


ããã£ããªããã«ã©ãã«ã§èªã¿ããããïŒã

ããµãµãããã§ãããïŒ
ããã¯ããäžã€ã®IFæã®ãããã¯ããšã«ç¶²æããããŠåºå¥ããããã«ããŠãã®ã
ã宎ãã§Excel管çãããŠãããšã
ä»ã©ã®åå²ã«ããã®ãè¿·åã«ãªãäºãå€ããããã
ãããäžã€ã®éçºã®å·¥å€«ãïŒã

ããããããããïŒ
ä»äººã«ããæ°æ¥åŸã®èªåã«ãèªã¿ãããã³ãŒãã£ãŠã®ã¯å€§äºã ãïŒã
ã·ãŒã³ã®ç¹ãïŒ20:10-20:12ïŒ

ãæ¬¡ã«ããã·ãŒã³ãããŒãžã£ãŒããšããã
å
šäœã®æµãã管çããããã®ä»çµã¿ãäœã£ãŠãããã
ããã¯è²æã¡ãã¥ãŒã§è¡åãããã³ã«åŒã³åºãããŠã
çŸåšã®ã¿ãŒã³æ°ã«å¿ããŠã
åºå®ã§çºçããã€ãã³ãã·ãŒã³ãžã®ãæ©æž¡ããããã圹å²ã«ãªãã®ãã


ããªãã»ã©ãªã
ãã¬ã€ã€ãŒãè¡åãããã³ã«ããã€ãåŒã³åºããŠãæ¡ä»¶ã«åã£ã次ã®ã·ãŒã³ãåºããŠãããã£ãŠããããã

ããããïŒ
æ¡ä»¶ã«åèŽããŠåŒã³åºãã·ãŒã³ããªãå Žåã¯ã
ãã®ãŸãŸãè²æã¡ãã¥ãŒããããäžåºŠè¡šç€ºããããã
ããã§ãè²æããŒãã®åºæ¬çãªã«ãŒãïŒåŸªç°ïŒãåºæ¥äžããã®ãã


ãããšã¯ãè¡åãçµãã£ãåŸã«ãçŸåšã®ã¿ãŒã³æ°ïŒTurnInSectionïŒãã«ïŒ1ãããŠã
ããã®ã»ã¯ã·ã§ã³ã®æ®ãã¿ãŒã³æ°ïŒTurnRemainïŒãããïŒ1ãåŒãåŠçãå
¥ããã®ã
ããã§ããã¬ã€ã€ãŒãè¡åãããã³ã«ãè£åŽã§ãã£ããã¿ãŒã³ãé²ãã§ããããã«ãªããïŒã
ç¹èšå€±ææã®åŠçãäœæ(20:12-20:30)
ã»ããžãã¯ã®äœæ(20:12-20:20)

ãæ¬¡ã«ãç¹èšå€±ææã®åŠçãäœæããŠãããã
ããã¯ãClaudeãããšäºåã«æ°åããåããããŠè¿œå ããŠããã£ãæ©èœã䜿ãã®ã ãã©âŠäžéšæç²ããŠèª¬æããããã
â åç¹èšã®å®çŸ©
public static readonly TrainingTypeConfig[] All = new[]
{
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// 1. åºç€äœåäœãïŒéé
·ãªèµ°ã蟌ã¿ïŒ
// ã¡ã€ã³: æå€§HP倧ã¢ãã ãµã: ã¹ããŒãåŸ®å¢ / é埮å¢
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
new TrainingTypeConfig
{
trainingType = TrainingType.Cardio,
label = "åºç€äœåäœã",
description = "æ³¥èãã²ãããèµ°ã蟌ãã\nHPã倧å¹
匷åã\nã¹ããŒããšéã埮å¢ããã",
primaryStat = "maxHp",
primaryBase = 10,
primaryYarukiBonus = 0.05f,
primaryRandom = 1,
subStat1 = "speed",
subBase1 = 1,
subStat2 = "luck",
subBase2 = 1,
genkiCost = 25,
baseFailureRate = 5,
yarukiCost = -15,
companionBonus = 2,
affinityGain = 3,
},
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// 2. ä»®æ³æµãšã®å®æŠçšœå€ïŒèªå²ãã»çŽ æ¯ãïŒ
// ã¡ã€ã³: ATK倧ã¢ãã ãµã: æå€§HPåŸ®å¢ / åšçšã埮å¢
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
new TrainingTypeConfig
{
trainingType = TrainingType.Combat,
label = "宿Šçšœå€",
description = "æŠåšã®æ¯ã蟌ã¿ã\n宿Šåœ¢åŒã®çšœå€ã§ATKã匷åã\nHPããããã«äŒžã³ãåšçšãã埮å¢ã",
primaryStat = "atk",
primaryBase = 4,
primaryYarukiBonus = 0.03f,
primaryRandom = 2,
subStat1 = "maxHp",
subBase1 = 2,
subStat2 = "dexterity",
subBase2 = 1,
genkiCost = 30,
baseFailureRate = 10,
yarukiCost = -20,
companionBonus = 1,
affinityGain = 4,
},
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// 3. 䞞倪åãæ¢ãç¹èšïŒé²å
·ã®çããªãèšç·ŽïŒ
// ã¡ã€ã³: DEF倧ã¢ãã ãµã: æå€§HPåŸ®å¢ / èéå埮å¢
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
new TrainingTypeConfig
{
trainingType = TrainingType.Defense,
label = "䞞倪åã",
description = "é£ãã§ãã䞞倪ã\nåãæ¢ããŠDEFãé«ããã\nHPã埮å¢ãã\n粟ç¥ååäžã§èéåã埮å¢ã",
primaryStat = "def",
primaryBase = 4,
primaryYarukiBonus = 0.03f,
primaryRandom = 2,
subStat1 = "maxHp",
subBase1 = 2,
subStat2 = "magicDef",
subBase2 = 1,
genkiCost = 30,
baseFailureRate = 10,
yarukiCost = -20,
companionBonus = 1,
affinityGain = 4,
},
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// 4. éå°æžã®èªè§£ãšçæ³
// ã¡ã€ã³: éå倧ã¢ãã ãµã: èéååŸ®å¢ / åšçšã埮å¢
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
new TrainingTypeConfig
{
trainingType = TrainingType.Magic,
label = "çæ³",
description = "座åŠãçæ³ã§\néåã倧ããåŒãäžããã\nèéåãã€ããç¹çްãªéåæäœã§\nåšçšãã埮å¢ã",
primaryStat = "magic",
primaryBase = 4,
primaryYarukiBonus = 0.03f,
primaryRandom = 1,
subStat1 = "magicDef",
subBase1 = 1,
subStat2 = "dexterity",
subBase2 = 1,
genkiCost = 20,
baseFailureRate = 1,
yarukiCost = -10,
companionBonus = 1,
affinityGain = 3, // 座åŠã¯çµãæ·±ãŸãããã
},
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// 5. 森ã®äžã®é害ç©ããã·ã¥
// ã¡ã€ã³: ã¹ããŒã倧ã¢ãã ãµã: DEFåŸ®å¢ / é埮å¢
// ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
new TrainingTypeConfig
{
trainingType = TrainingType.Agility,
label = "é害ç©\nããã·ã¥",
description = "è¶³å Žã®æªã森ã\né害ç©ãé¿ããªããèµ°ãã\nã¹ããŒããæ¥µé匷åã\nåãèº«ã®æè¡ã§DEF埮å¢ã\n屿©å¯ç¥ã§éã埮å¢ã",
primaryStat = "speed",
primaryBase = 4,
primaryYarukiBonus = 0.03f,
primaryRandom = 1,
subStat1 = "def",
subBase1 = 1,
subStat2 = "luck",
subBase2 = 1,
genkiCost = 25,
baseFailureRate = 10,
yarukiCost = -15,
companionBonus = 2,
affinityGain = 3,
},
};
...ç¶ã
ããããªãã³ãŒããåºãŠããŠé£ãããããã
äžå¿ããã®äžã«ã¯åç¹èšã§äžæããã¹ããŒã¿ã¹ããã®å€ã
ããæ°ã«ããããŒãã¹ãäœåã®æ¶è²»éãªã©è²ã
ãªããŒã¿ãè©°ãŸã£ãŠããã®ã ãã©âŠâŠäžçªæ³šç®ããŠã»ããã®ã¯ãã®éšåãïŒã
baseFailureRate = 5,
ããã®å€ã¯ãªãã ïŒãã€ããã

ãããã¯ããã®ç¹èšã«ããããåºæ¬çãªå€±æçããã
ããšãã°åºç€äœåäœããªãã
ããã©ã«ãã§5ïŒ
ã®å€±æçãèšå®ãããŠãããã
å®éã®ã²ãŒã ãã¬ã€ã§ã¯ããã®5ïŒ
ãããŒã¹ã«ããŠã
ãã£ã©ã¯ã¿ãŒã®ãããæ°ãããæ®ãäœåãã«å¿ããŠå€±æçãæžãããããéã«ãã«ã³ãšäžãããããã®ããã
â 倱æçèšç®
public static int CalcFailureRate(TrainingTypeConfig config, int genki, int yaruki)
{
// 1. ç·Žç¿ã®åºç€å€±æçãããŒã¹ã«ãã
float rate = config.baseFailureRate;
// 2. å
æ°ïŒäœåïŒã«ããããã«ãã£ãšããŒãã¹
// ã調æŽãã€ã³ãAãå®å
šã©ã€ã³ã®å
æ°éïŒäŸ: 60ïŒ
int genkiThreshold = 60;
if (genki < genkiThreshold)
{
// å
æ°ãå®å
šã©ã€ã³ãäžåã£ãŠããå Žåãè¶³ããªãåã ã倱æçãæ¥äžæãã
// äŸ: ä¿æ°ã 1.5 ã®å Žåãå
æ°ã20ïŒ40äžè¶³ïŒãªã 40 à 1.5 = +60% ã®å€±æçå¢
int missingGenki = genkiThreshold - genki;
rate += missingGenki * 1.5f;
}
else
{
// å
æ°ãååã«ããå Žåã¯ãå°ãã ã倱æçãäžãã
// äŸ: ä¿æ°ã 0.2 ã®å Žåãå
æ°ã100ïŒ40è¶
éïŒãªã 40 à 0.2 = -8% ã®å€±æçæž
int extraGenki = genki - genkiThreshold;
rate -= extraGenki * 0.2f;
}
// 3. ããæ°ã«ããããŒãã¹
// ã調æŽãã€ã³ãBãããæ°ãé«ãã»ã©å€±æçã軜æžãã
// äŸ: ä¿æ°ã 0.15 ã®å Žåãããæ°100ã§ -15% ã®è»œæž
float yarukiBonus = yaruki * 0.15f;
rate -= yarukiBonus;
// 4. æçµçãªå€±æçã 0% ã 99% ã®ç¯å²ã«åããïŒ100%確å®å€±æã«ã¯ããªãïŒ
return Mathf.Clamp(Mathf.FloorToInt(rate), 0, 99);
}
ãããããã®èšç®åŒãã
ãã€ã³ãã¯ãäœåã®æ®ããå°ãªããšå€±æçãäžæ°ã«è·³ãäžãããšãããã
å ·äœçã«ã¯ãäœåã60%ãäžåããšå±éºä¿¡å·ïŒ
ãããæ°ãã«é¢ããŠã¯ããã®å€ã«ãã£ãп倧15%ãŸã§å€±æçãæžããããã
ãã ãä»ã®è²æã²ãŒã ãšéã£ãŠãæ¬äœã§ã¯ç¹èšã§ããããæ°ããæžã£ã¡ããã®ã
ã ãããäœå管çãšããæ°ç®¡çãããã·ãã¢ã§éèŠãªã²ãŒã ã«ãªããšæãããã

ãè¯ãã§ããŠããããããïŒ
âŠâŠã§ããããã®èšç®åŒããã¬ã€ã€ãŒã䜿ãããªãã®ã¯é£ãããªããïŒã

ããµãµãµãå¥ã«äœ¿ãããªãå¿
èŠã¯ãªãã®ãã
ãã¬ã€ã€ãŒçã«ã¯ãä»ã®äœåã ãšå€±æçãé«ããŠå±éºããã âŠïŒããšããçµæã®æ
å ±ã ããçŽæçã«åããã°ããã®ïŒ
ãå éšã®èšç®ããžãã¯ã¯å¥¥æ·±ããå€åŽïŒãã¬ã€ã€ãŒã«èŠããUIïŒã¯ç°¡æœã«ãã
ããããè¯ãã²ãŒã äœéšãäœãäžã§å€§åãªããšã ãšæããïŒã

ããªãã»ã©ãªã
確ãã«ãè£åŽã®é£ããããšã¯ããåãããããã©ã
ç»é¢ã®æ°åãèŠãã ãã§ãã©ãã©ã§ãããã ãïŒã
倱æçã®UI衚瀺(20:20-20:30)

ãããããããä»äœã£ã倱æçã®ããžãã¯ã
æšæ¥äœã£ãè²æç»é¢ã®UIã«çµã¿èŸŒãã§ãããããã


ããããªæãã§ã©ããããïŒ
åç¹èšã«ãŒãã®å·Šäžã«ãçŸåšã®å€±æçãèµ€ã衚瀺ãããããã«ããŠã¿ãããã

ãããã£ïŒ
ãã²ãã²ããèŠåããŒã¯ã远å ãããŠãäžæ°ã«ã¹ãªã«ãäžãã£ããªïŒ
俺ãµã奜ã¿ã®ãã¹ãªãªã³ã°ãªã²ãŒã ã«ãªã£ãŠãããïŒã
ã¹ããŒã¿ã¹ç»é¢äœæ(20:30-21:15)

ãæ¬¡ã¯ã仲éã§ãããã¢ã«ã«ã¹ãã©ããã¡ã®ã¹ããŒã¿ã¹ç»é¢ãäžæ°ã«ä»äžãã¡ããããïŒ
ä»åãç§ãç»é¢èšèšã§ããããèŠä»¶ã¯ãã®2ã€ãã
ãä»åã®UIå®è£ èŠä»¶ã
ã€ã©ã¹ãã®é£åïŒ éžæãã¿ã³ã詳现ç»é¢ã«åºãŠããã€ã©ã¹ããã察象ã®ã¢ã«ã«ã¹ãã©ã®ãã®ã«åçã«åãæ¿ããã
ç»é¢ã®åé¢ïŒ ããã€ãïŒäž»äººå ¬ïŒããšãåéïŒä»²éã®ã¢ã«ã«ã¹ãã©ïŒãã§ã詳现ç»é¢ãå¥ã ã®ãã®ã«ããã

ãã€ã©ã¹ããããããã®ã¢ã«ã«ã¹ãã©ã«å€ããã£ãŠã®ã¯åãããâŠâŠ
äœã§ãã€ãã ãå¥ã®ç»é¢ã«ãããã ïŒã

ãç§èªèº«ãæã€ã¹ããŒã¿ã¹ãšãä»ã®ã¢ã«ã«ã¹ãã©ãã¡ã®ã¹ããŒã¿ã¹ã¯ä»çµã¿ãç¬ç«ããŠãããããã
äŸãã°ãç§èªèº«ã«ã奜æåºŠãã®ã¹ããŒã¿ã¹ã¯èŠããªããããªãïŒ
ã§ãéã«ãç¹èšã§æ¶è²»ãããäœåïŒå
æ°ïŒãããããæ°ãã®ãã©ã¡ãŒã¿ãŒã¯ãç§ã«ããå¿
èŠãªãã§ããïŒã

ããªãã»ã©ãªã
ãã¬ã€ã€ãŒèªèº«ã§ãããäžäººç§°ïŒãã€ãïŒãã®ç®¡çç»é¢ãšã
仲éã§ãããäžäººç§°ïŒã¢ã«ã«ã¹ãã©ïŒãã®ç®¡çç»é¢ãæç¢ºã«åããŠãã£ãŠããšãã
çã«ããªã£ãŠããïŒã
ã¢ã«ã«ã¹ãã©ã®ç»åç»é²(20:30-20:35)

ããããããããŸãã¯ã¢ã«ã«ã¹ãã©ãã¡ã®ç»åãç»é²ããŠããããã
ããã§ããClaudeãããäœã£ãŠãããã¢ã»ããïŒã¹ã¯ãªããïŒã䜿ã£ãŠå®è£
ããŠãããã

ãClaude AIã倧掻èºããããããã


ãä»åäœã£ãŠããã£ãã®ã¯ã©ããªã³ãŒããªãã ïŒã

ããã£ãšèŠãæããç»å管ççšã®ããŒã¿ããŒã¹ãäœãããã®ã³ãŒãã¿ãããã
ãã£ããã ãããäžç·ã«äžèº«ãèŠãŠã¿ãŸããããïŒã
// CompanionIconTable.cs
// 仲éãã£ã©ã¯ã¿ãŒã®ç»åã¢ã»ãããäžå
管çãã ScriptableObject
// 仲éäžèЧãã¿ã³çšã¢ã€ã³ã³ãšã詳现ç»é¢çšç«ã¡çµµã®2çš®é¡ã companionId ã§åŒãã
using System;
using System.Collections.Generic;
using UnityEngine;
namespace TrainingGame
{
/// <summary>
/// 仲éãã£ã©ã¯ã¿ãŒã®ç»åã¢ã»ããã管çãã ScriptableObjectã
///
/// ãäœææ¹æ³ã
/// Unity ã¡ãã¥ãŒ â Assets â Create â TrainingGame â CompanionIconTable
/// äœæããã¢ã»ããã® entries ã«ä»²éIDãšç»åãç»é²ããã
///
/// ãåç
§æ¹æ³ã
/// StatusPanel ã® Inspector ãã£ãŒã«ã "iconTable" ã«ã¢ã»ãããã¢ãµã€ã³ããã
/// StatusPanel ã CompanionListButton ã«æž¡ãã®ã§ãä»ã®ã¯ã©ã¹ã¯çŽæ¥æããªããŠããã
///
/// ãç»åãµã€ãºã®ç®å®ã
/// iconSprite : 128Ã128px çšåºŠïŒä»²éäžèЧãã¿ã³å
ã®ãµã ãã€ã«ïŒ
/// portraitSprite: 512Ã512px çšåºŠïŒè©³çްç»é¢ã®ç«ã¡çµµã»ãã¹ãïŒ
///
/// ã仲éã远å ãããšãã®æé ã
/// 1. CompanionRoster.CreateDefault() ã« CompanionData ã远å ãã
/// 2. CompanionProfileTable ã«ãããã£ãŒã«ã远å ãã
/// 3. ãã®ããŒãã«ã® entries ã«ãšã³ããªãŒã远å ããŠç»åãã¢ãµã€ã³ãã
/// </summary>
[CreateAssetMenu(menuName = "TrainingGame/CompanionIconTable", fileName = "CompanionIconTable")]
public class CompanionIconTable : ScriptableObject
{
// ================================================================
// ãšã³ããªãŒå®çŸ©
// ================================================================
/// <summary>仲é1人åã®ç»åã»ãã</summary>
[Serializable]
public class Entry
{
/// <summary>CompanionData.companionId ãšäžèŽããã</summary>
public string companionId;
/// <summary>
/// 仲éäžèЧãã¿ã³çšã®ã¢ã€ã³ã³ç»åã
/// æªèšå®ã®å Žåã¯ãã¿ã³ã® Image ãé衚瀺ã«ãªãã
/// </summary>
public Sprite iconSprite;
/// <summary>
/// 詳现ç»é¢çšã®ç«ã¡çµµïŒãã¹ãã¢ãããªã©ïŒã
/// æªèšå®ã®å Žåã¯è©³çްç»é¢ã® Image ãé衚瀺ã«ãªãã
/// </summary>
public Sprite portraitSprite;
}
// ================================================================
// Inspector ãã£ãŒã«ã
// ================================================================
[Tooltip("仲éIDãšç»åã®å¯Ÿå¿ããŒãã«ã仲éã远å ãããã³ã«ãšã³ããªãŒã远å ããããšã")]
public List<Entry> entries = new List<Entry>();
// ================================================================
// ååŸãŠãŒãã£ãªãã£
// ================================================================
/// <summary>
/// companionId ã«å¯Ÿå¿ããã¢ã€ã³ã³ç»åãè¿ãã
/// æªç»é²ãŸãã¯ç»åæªèšå®ã®å Žå㯠null ãè¿ãã
/// </summary>
public Sprite GetIcon(string companionId)
{
var entry = Find(companionId);
return entry?.iconSprite;
}
/// <summary>
/// companionId ã«å¯Ÿå¿ããç«ã¡çµµç»åãè¿ãã
/// æªç»é²ãŸãã¯ç»åæªèšå®ã®å Žå㯠null ãè¿ãã
/// </summary>
public Sprite GetPortrait(string companionId)
{
var entry = Find(companionId);
return entry?.portraitSprite;
}
// ================================================================
// å
éšåŠç
// ================================================================
private Entry Find(string companionId)
{
if (string.IsNullOrEmpty(companionId)) return null;
foreach (var entry in entries)
{
if (entry.companionId == companionId)
return entry;
}
Debug.LogWarning($"[CompanionIconTable] ç»åãšã³ããªãŒæªç»é²: '{companionId}'");
return null;
}
}
}

ãUnityã§ãããã£ãããŒã¿ç®¡ççšã®ã¢ã»ãããäœãã«ã¯ãScriptableObjectãã£ãŠããã®ã䜿ãã®ãã
åãã£ã©ã¯ã¿ãŒã®IDãšSpriteïŒç»åããŒã¿ïŒãã€ã³ã¹ãã¯ã¿ãŒäžã§ã»ããããŠã
IDã§æ€çŽ¢ããããŠãããããã¿ã³ã詳现ç»é¢ã®UIã«è²Œãä»ããä»çµã¿ã«ãªã£ãŠããã
ãšã©ãŒãåé¿ããããã«ãIDãnullïŒç©ºã£ãœïŒã ã£ããååšããªãã£ããããå Žåã®ã»ãŒããã£ããããã¡ãããšåŒµã£ãŠããã
æ¬åœã«åªç§ããã

ããã€ãã¯ããããã³ãŒããèªåã§ãæžããããïŒã

ãç¡çãã
æãèªåã§Unityã®C#ããŽãªãŽãªæžããŠãé ãªããé 匵ãã°æžããã®ãããããªããã©âŠâŠããäœãèŠãã«ãŒãããã³ãŒããçµãåã¯ã»ãšãã©ãªããªã£ã¡ãã£ããã
ä»ã¯ããããŠãæžããŠããã£ãã³ãŒãããæ»èªïŒã¬ãã¥ãŒïŒãããã®ã§ç²Ÿäžæ¯ãã
Qiitaã§è²ããªã³ãŒãã®åãç«¯ãæ¢ããŠã¯ããããŠãããã®é ãæããããâŠâŠãã

ããã£ãã
ãŸããããã ãAIãé Œãããã䟿å©ãªäžã®äžã«ãªã£ãã£ãŠããšã ãªïŒã


ãããããããã
ãšãããããæåã«ä»²éã«ãªãããã³ããã®ç»åãç»é²ããŠãããã
ä»åŸã¢ã«ã«ã¹ãã©ãå¢ãããã³ã«ãããã«ããŒã¿ã远å ããŠããã®ãå¿ããªãããã«ããªããšãïŒã
ãã€ãå°çšã¹ããŒã¿ã¹ç»é¢ã®ã¹ã¯ãªãããäœæ(20:35-20:40)

ãæ¬¡ã«ãç§å°çšã®ã¹ããŒã¿ã¹ç»é¢ã衚瀺ããããã®ã¹ã¯ãªãããäœã£ãŠãããã
ããŒã¹ã«ãªã仲éçšã®ã¹ã¯ãªãããæ¢ã«ããããããããã¡ãã£ãšæ¹å€ããã ãã§ããããšçµãããã¡ããããïŒã
// NateStatusPanel.cs
using UnityEngine;
using TMPro;
namespace TrainingGame
{
/// <summary>
/// 䞻人å
¬ãã€ãå°çšã®ã¹ããŒã¿ã¹è¡šç€ºããã«
/// </summary>
public class NateStatusPanel : MonoBehaviour
{
[Header("åºæ¬æ
å ±")]
[SerializeField] private TMP_Text nameText;
[SerializeField] private TMP_Text genkiText;
[SerializeField] private TMP_Text yarukiText;
[Header("åºç€ã¹ããŒã¿ã¹")]
[SerializeField] private TMP_Text maxHpText;
[SerializeField] private TMP_Text atkText;
[SerializeField] private TMP_Text defText;
[SerializeField] private TMP_Text magicText;
[SerializeField] private TMP_Text magicDefText;
[SerializeField] private TMP_Text speedText;
[SerializeField] private TMP_Text moveRangeText;
[SerializeField] private TMP_Text dexterityText;
[SerializeField] private TMP_Text luckText;
/// <summary>
/// ããã«ã衚瀺ããããŒã¿ãåæ ãã
/// </summary>
public void Show(UnitBaseStats stats, int genki, int yaruki)
{
if (nameText != null) nameText.text = "ãã€ã";
if (genkiText != null) genkiText.text = $"å
æ°: {genki}";
if (yarukiText != null) yarukiText.text = $"ããæ°: {yaruki}";
RefreshStats(stats);
gameObject.SetActive(true);
}
private void RefreshStats(UnitBaseStats s)
{
if (s == null) return;
SetStatText(maxHpText, "æå€§HP", s.maxHp);
SetStatText(atkText, "ATK", s.atk);
SetStatText(defText, "DEF", s.def);
SetStatText(magicText, "éå", s.magic);
SetStatText(magicDefText, "èéå", s.magicDef);
SetStatText(speedText, "ã¹ããŒã", s.speed);
SetStatText(moveRangeText, "ç§»åå", s.moveRange);
SetStatText(dexterityText, "åšçšã", s.dexterity);
SetStatText(luckText, "é", s.luck);
}
private void SetStatText(TMP_Text target, string label, int value)
{
if (target != null) target.text = $"{label} {value}";
}
public void OnButtonClose()
{
gameObject.SetActive(false);
}
}
}
ãç»é¢äžã«ããåã¹ããŒã¿ã¹ã®ããã¹ãæ ãååŸããŠã
ããã«ãSetStatTextããšããåŠçã§ãATK ãããã¿ããã«é çªã«ããŒã¿ãæµã蟌ãã§ããã ãã®ã·ã³ãã«ãªäœãããã

ããªãã»ã©ãªïŒãã§ã«ããä»çµã¿ãäžæã䜿ãåããŠå¹çããäœãã®ã¯ãéçºã®åºæ¬ã ãïŒã
仲éçšã®è©³çްç»é¢ã®äœæ(20:40-21:00)

ãæ¬¡ã¯ããã®åäœããããã仲éçšã®è©³çްç»é¢ããä»äžããŠãããã


ãã¡ãã£ãšéã«é 眮ãããã©ããŸãâ»ã¢ãã¯ãã¹ããšããŠã¯äžåºæ¥ãïŒã
ð¡éçºTipsïŒã¢ãã¯ãã¹ãïŒã¢ãã¯ã¢ããïŒãšã¯ïŒ
æ¬æ Œçãªãã¶ã€ã³ãã°ã©ãã£ãã¯ãäœã蟌ãåã«ãä»®ã®æ çµã¿ãæåã䜿ã£ãŠãç»é¢ã®ã¬ã€ã¢ãŠãããã倧ãŸããªåäœãã«åé¡ããªããã確èªãããã¹ãã®ããšã§ãã
ã²ãŒã éçºã§ã¯ããŸãã¯ããããŠãèŠãç®ã®éªšçµã¿ããäœã£ãŠããäžèº«ãè©°ããŠãããŸãïŒ

ããã£ãããæããããããã
âŠâŠãïŒã§ããå³åŽã®ç©ºçœã®ã¹ã¯ããŒã«ãã¥ãŒã¯äœã ïŒã

ããããããã«ã¯å°æ¥ãã£ã©ã¯ã¿ãŒã®ãã¹ãã«æ
å ±ããäžèЧã§èŒãäºå®ãªã®ã
ã§ããã¹ãã«èªäœã®å¶äœã¯ãŸã ãŸã å
ã«ãªããããä»ã¯ç©ºã£ãœã®ãŸãŸã§æ°ã«ããªãã§è¯ããïŒã
ãã€ãå°çšã®è©³çްç»é¢ã®äœæ(21:00-21:05)


ãæ¬¡ã¯ãç§ïŒãã€ãïŒå°çšã®è©³çްç»é¢ã®äœæãã
ããã¯ããã£ãäœã£ã仲éçšã®UIããã®ãŸãŸã³ããŒããŠãå°ãã ãä¿®æ£ããã ãã§å®æãïŒã

ãã»ãããã£ã説æããéãã
ç§ã®ç»é¢ã®æ¹ã«ã¯ã奜æåºŠãã®ä»£ããã«ãå
æ°ããšãããæ°ãã®ãã©ã¡ãŒã¿ãŒã衚瀺ãããŠããã§ããïŒã
åUIã«ã¢ã¿ãã(21:05-21:15)

ãããããããä»äœã£ãUIãåããããã«åUIãªããžã§ã¯ãã®ã³ã³ããŒãã³ããèšå®ããŠããããã

ããããããä»äžããïŒ
çµæ§ããã®äœæ¥ã§ãã¹ãããšãå€ãããæ°ãä»ããããªïŒã

ãåãã£ãŠããã
ãããšãããã«ãããå
¥ããŠâŠã
ïŒïŒååŸ

ãåºæ¥ããïŒããã§å®æãïŒã

ããããã£ããïŒãã€ãïŒã
äŒæ©ã·ã¹ãã ã®å°å ¥(21:15-21:45)

ããŸã ãæéãããããããã£ãšæ°ããæ©èœãäœã£ã¡ãããããã

ããã£ãã©ããªæ©èœã ïŒã

ããç¹èšããšããã°ã次ã¯ãäŒæ©ããïŒ
ããããäœã£ã¡ããã°ãç¹èšããŠãç²ãããäŒãã£ãŠããè²æã²ãŒã ã®åºæ¬ãµã€ã¯ã«ïŒã«ãŒãïŒã宿ãããïŒã

ãããã¯çµ¶å¯Ÿã«å¿
èŠãªæ©èœã ãâŠâŠ
ä»ããæ°ããã·ã¹ãã ãã€ãããäœã£ãŠãäœè£ãªããŠããã®ãïŒã

ããµãµããå®å¿ããŠïŒ
ã·ã¹ãã ãåããè£åŽã®ã³ãŒãèªäœã¯ãããäœã£ãŠããã£ãŠããã®ïŒã

ãâŠãã€ã®éã«ã

ããã£ãã®äœæ¥ã®åéã«ãã¡ãã¡ãã£ãšClaudeããã«é Œãã§ãããã®ãïŒ
ãããããããã®åºæ¥ç«ãŠãã€ãã€ã®ã·ã¹ãã ãæ©éãããžã§ã¯ãã«å°å
¥ããŠãããïŒã
宎ã«èšå®

ãè£åŽã®ã¹ã¯ãªããã®ã»ããã¢ãããçµãã£ããã
ããšã¯ã宎ãã®Excelãã¡ã€ã«ã«è¡šç€ºã®åŠçã远å ããããã


ããªãã»ã©ã
å埩éã®èšç®ãšãã¯è£ã®ã·ã¹ãã ã«ä»»ããŠã
ãããŸã§ã宎ãã¯ã·ã¹ãã ã¡ãã»ãŒãžãçµæã衚瀺ãããããšã«ç¹åããããã ãªã

ãããããã®éããïŒ
äžçªè¯ãè§Šããã®Excelãã¡ã€ã«ã«ãè€éãªåŠçãæ
å ±ãè©°ã蟌ã¿ããã¡ãããšãåŸããèªã¿ã«ãããªã£ã¡ãããããã
圹å²åæ
ã倧äºïŒ
ãããããã§ãäŒæ©ãã³ãã³ãã®å®è£
ãå®äºãïŒã
æŠéã·ã¹ãã ïŒGridMapã®ç¢ºèªïŒ(20:45-21:00)

ãæ®ãã®æéã¯ãããããæŠéã·ã¹ãã ã®å®è£ æºåã«åãæããããïŒã

ãã€ãã«æ¥ããâŠâŠïŒ
ããããã°ãè£ã§Claudeããã«è²ã
ã·ã¹ãã ãäœã£ãŠããã£ãŠããã ã£ããïŒã

ããããã
æ¬åœã¯çããã«å
šéšãèŠããããã®ã ãã©âŠâŠããããã
ãã¡ã€ã«æ°ãå€ãããŠãä»ã®æ®µéã§ã¯ãšãŠã解説ããããªãã®ã
ã ããä»åã¯ãäœã£ãŠããã£ãããããçæãšç§»åç¯å²ã®ããžãã¯ããæ£ããåããããã¹ãããŠããããã

ãã©ããªãã¹ãããããã ïŒã

ãUnityã®ãGizmosïŒã®ãºã¢ïŒãã£ãŠããæ©èœã䜿ã£ãŠã
éçºè
å°çšã®ã·ãŒã³ãã¥ãŒïŒäœæ¥ç»é¢ïŒã«ãã¹ç®ã®ã¿ã€ã«ã衚瀺ããããã¹ããã

ãã®ãºã¢ïŒã

ãç°¡åã«èšããšãéçºè
ã ããèŠãããè£å©ç·ã®å¯èŠåæ©èœããã
æåã ãã®ã³ã³ãœãŒã«ç»é¢ãšéã£ãŠãã²ãŒã ç»é¢ã«å³åœ¢ãè²ãéããŠèŠèŠçã«ãã¹ãã§ãã䟿å©ãªæ©èœã¿ãããªã®ïŒã

ãã»ãŒããããã§ä»åã¯ã©ããªãã¹ãããããã ïŒã

ãå ã«ãã¹ãçšã®ã³ãŒãããèŠãããããã
using System.Collections.Generic;
using UnityEngine;
using TrainingGame.Battle;
namespace TrainingGame.Test
{
/// <summary>
/// ããã«ããžãã¯ã®åäœç¢ºèªçšãããã¿ã€ãã¯ã©ã¹ã
/// 空ã®GameObjectã«ã¢ã¿ããããŠå®è¡ããŸãã
/// </summary>
public class BattlePrototype : MonoBehaviour
{
private GridMap _map;
private List<UnitBattleState> _players;
private List<UnitBattleState> _enemies;
private HashSet<TileData> _reachableTiles;
void Start()
{
// ==========================================
// 1. ãããã®çæ (äŸ: 暪10 x 瞊8)
// ==========================================
_map = new GridMap(10, 8);
// ==========================================
// 2. å°åœ¢ïŒé害ç©ãªã©ïŒã®ã»ããã¢ãã
// ==========================================
// äžå€®ä»è¿ã«å±±å²³ïŒéè¡ã³ã¹ã倧ïŒãéè¡äžå¯ã¿ã€ã«ãé
眮
_map.SetTile(4, 3, TileType.Mountain);
_map.SetTile(5, 3, TileType.Mountain);
_map.SetTile(4, 4, TileType.Forest);
_map.SetTile(5, 4, TileType.Impassable); // éè¡äžå¯
// ==========================================
// 3. ãŠãããã®é
眮ããŒã¿ãäœæ
// ==========================================
var nateStats = UnitBaseStats.CreateNate();
// ãã¹ãçšã®æµã¹ããŒã¿ã¹
var enemyStats = new UnitBaseStats
{
unitName = "ãŽããªã³",
maxHp = 30,
atk = 10,
def = 5,
moveRange = 3
};
var entries = new List<UnitPlacer.PlacementEntry>
{
new UnitPlacer.PlacementEntry { BaseStats = nateStats, X = 1, Y = 1, IsPlayerUnit = true },
new UnitPlacer.PlacementEntry { BaseStats = enemyStats, X = 8, Y = 5, IsPlayerUnit = false }
};
// é
çœ®åæ€èšŒ
if (UnitPlacer.ValidatePlacements(_map, entries))
{
// ==========================================
// 4. ããããžã®é
眮å®è¡
// ==========================================
(_players, _enemies) = UnitPlacer.PlaceAll(_map, entries);
// ã³ã³ãœãŒã«ã«ãããã®AAïŒã¢ã¹ããŒã¢ãŒãïŒãåºå
_map.DebugPrint();
}
// ==========================================
// 5. çµè·¯æ¢çŽ¢ïŒPathFinderïŒã®ãã¹ã
// ==========================================
if (_players.Count > 0)
{
var nate = _players[0];
_reachableTiles = PathFinder.GetReachableTiles(_map, nate, _players, _enemies);
Debug.Log($"[Test] {nate.BaseStats.unitName} ã®ç§»åå¯èœãã¹æ°: {_reachableTiles.Count}");
}
}
// ==========================================
// ããŸã: Sceneãã¥ãŒã«ã°ãªãããå¯èŠåãã
// ==========================================
private void OnDrawGizmos()
{
if (_map == null) return;
float tileSize = 1.0f;
Vector3 offset = new Vector3(tileSize / 2, tileSize / 2, 0);
for (int x = 0; x < _map.Width; x++)
{
for (int y = 0; y < _map.Height; y++)
{
var tile = _map.GetTile(x, y);
Vector3 pos = new Vector3(x * tileSize, y * tileSize, 0) + offset;
// å°åœ¢ããšã®è²èšå®
Gizmos.color = tile.TileType switch
{
TileType.Plain => Color.white,
TileType.Forest => Color.green,
TileType.Mountain => new Color(0.6f, 0.4f, 0.2f), // è¶è²
TileType.Impassable => Color.black,
_ => Color.white
};
// ãŠããããããå Žåã¯è²ãäžæžã
if (tile.HasUnit)
{
Gizmos.color = _players.Contains(tile.OccupyingUnit) ? Color.blue : Color.red;
}
// ã¯ã€ã€ãŒãã¬ãŒã ã§ãã¹ç®ãæç»
Gizmos.DrawWireCube(pos, new Vector3(tileSize, tileSize, 0.1f));
// ç§»åå¯èœç¯å²ãªãåéæã®éã§å¡ãã€ã¶ã
if (_reachableTiles != null && _reachableTiles.Contains(tile))
{
Gizmos.color = new Color(0, 1, 1, 0.3f);
Gizmos.DrawCube(pos, new Vector3(tileSize, tileSize, 0.1f));
}
// ãŠããããããå Žæã¯å°ããå¡ãã€ã¶ã
else if (tile.HasUnit)
{
Gizmos.DrawCube(pos, new Vector3(tileSize * 0.8f, tileSize * 0.8f, 0.1f));
}
else if (tile.TileType != TileType.Plain)
{
// ç¹æ®å°åœ¢ãèãå¡ãã€ã¶ã
Gizmos.color = new Color(Gizmos.color.r, Gizmos.color.g, Gizmos.color.b, 0.3f);
Gizmos.DrawCube(pos, new Vector3(tileSize, tileSize, 0.1f));
}
}
}
}
}
}
ãä»åã¯ã10Ã8ã®å€§ããã§ããã¹ç®ç¶ïŒGridïŒãã®ãã£ãŒã«ããçæããŠãããã«å±±å²³ã森ãéè¡äžå¯ã®é害ç©ãé
眮ããã®ã
ããã«ããã¹ãçšã®æµãšèªé£ã®ãŠããããé
眮ããŠã
ãèªé£ã®ãŠããããã©ããŸã§ç§»åã§ãããããèŠèŠçã«ç¢ºèªã§ããã°ãã¹ãã¯OKãïŒã

ããªãã ãé£ãããã ãâŠâŠèŠããã«ã
ç°¡æçãªããããšé£åããç»é¢ã«è¡šç€ºãããã°æåã£ãŠããšãïŒã

ããããïŒããããããæ©éå®è¡ããŠã¿ãŸããããïŒã


ãåºæ¥ããïŒæåãïŒã

ãâŠâŠããŒã£ãšããªãããããŒããªããïŒ
ãã ã®åè§ããããã¯ã®éãŸããããããã

ããããŒããªãããïŒ
ããã£ãŠã²ãŒã éçºã«ãããŠã¯ãã®åã鲿©ãªã®ãïŒïŒ
ã»ãããã®ç·ã®ãã¹ãããã§ãããïŒ
ããã¯ãããã°ã©ã ãæ£ããããããæ£®ãã ãšèªèããŠãã蚌æ ãªã®ïŒ
è¶è²ã¯ã山岳ãã
èµ€ã¯æµãŠãããã®ããŽããªã³ãã
ãããŠåºç¯å²ã«åºãã£ãŠããæ°Žè²ã¯ã
ãä»ã®ç§ãæ©ããç§»åç¯å²ããæ£ç¢ºã«èšç®ããŠè¡šããŠããã®ãïŒã

ãããŒã£ãšãã€ãŸãâŠâŠïŒã

ãããã¯ããã°ãããã°ã©ã ã®é ã®äžïŒæèåè·¯ïŒãèŠãèŠããŠããç¶æ
ãªã®ïŒ
è£åŽã§ããã ãå®ç§ã«ç€é¢ãèšç®ã§ããŠãããã ããã
ããšã¯ãã®åè§ããã¹ç®äžã€äžã€ã«ã
ã¡ãããšããã€ã©ã¹ãçŽ æãå
¥ããŠãããã°âŠâŠã©ããªããšæãïŒã

ãïŒïŒ ãããïŒ
ããšã¯äžèº«ã®çµµãå·®ãæ¿ããã ãã§ã
ã·ãã¥ã¬ãŒã·ã§ã³RPGã®æ¬æ Œçãªããã«ãããã宿ããã®ãïŒïŒã

ããµãµããã£ãšåãã£ãŠãããã¿ãããïŒ
âŠâŠãšã¯ãããæ£çŽç§ãã©ãããŠAIããããªã«å®ç§ãªåããããã³ãŒããäžç¬ã§äœããã®ããå®å
šã«çè§£ã§ããŠãããããããªãã®ã
空ããŠãæéã«äœã£ãŠããã£ãã³ãŒãããã£ããå匷ããŠã
åŸã§ã¿ããªã«ãåããããã説æããããïŒã
â ããã3ã¿ãŒã³éããã¹ãïŒ

ãããŠãä»åã¯è²ããªæ©èœãäžæ°ã«å®è£ ãã¡ãã£ãããããã£ããã ãã3ã¿ãŒã³ã ããå®éã®ã²ãŒã ã®æµãã§éãã§ãã¹ãããŠã¿ãããã

ããã£ãã€ãã«éããã¹ããïŒã¯ã¯ã¯ã¯ãããïŒã
â å®è£ éšåã®ãã¹ã(3åããã)
â ïŒã¿ãŒã³éããã¹ã
å°ãé·ãã®åç»ã§ããã
å®éã®åããèŠãŠããã ãããšã²ãŒã ããããå¢ããŠããã®ãäŒããããšæããŸãïŒ

ããããŒã£ïŒ
ããæ¬åœã«äžé±éã§äœã£ãã®ãïŒïŒããããããã€ãïŒã

ãããŒãâŠã

ããªãã ãã
ã·ã¹ãã ã¯äžæãåãããã ããããã£ãšçŽ çŽã«åã¹ãïŒã

ããŸããæç« ãé·ããããã
ç¡é§ãªæåãã»ãªããå€ãã
ããã ãšããããã¹ãããæ©èœããããšã¯ãããã¬ã€ã€ãŒãéå±ãã¡ããã
ããã«ãæ¥ãè·šãã§å°ããã€æžããããã§ã
ããã¹ãã®ãã³ããèªå°Ÿã®ãã¥ã¢ã³ã¹ãæ¥ã«ãã£ãŠè¥å¹²éã£ãŠããããã
ããšã¯æŒåºé¢ã
SEããšãã§ã¯ãããã£ãšæŽ»çšãã¹ãã ããäžéšãã£ã©ã¯ã¿ãŒã®è¡šç€ºã¿ã€ãã³ã°ãããããç®æãããã
ã·ãŒã³ã«åãããŠBGMããã£ãšçްããåãæ¿ããªããšâŠâŠããšã¯âŠâŠã

ãã¡ãã¡ãã¡ãããã€ãããïŒ
ã¹ããããã¹ãããïŒïŒ
俺ãã¡ãã1ãæã®æéãã§äœã£ãŠããã ãïŒïŒ
ãããªã«æåããå®ç§ãæ±ããŠãããäžçã²ãŒã ã宿ããªããïŒã

ãâŠâŠãããã
ããã€ã©ã®èšãéãã ããã€ãç±ãå
¥ã£ã¡ãã£ãã

ãæ°ã«ãªããšããã¯ã
ãŸãæã空ããæã®ãã©ãã·ã¥ã¢ããæéã«æ€èšãããšããŠâŠâŠ
仿¥ã®éçºç®æšãšããŠã¯ãããã§ç¡äºå®äºãïŒã

ããããïŒããã§ãŸãäžæ©å®æã«è¿ã¥ãããªã仿¥ããç²ãããã€ãïŒã
ã¿ããªïŒåã貞ããŠïŒãã€ãã®ã¹ãã«ãèããã

ããããããæåŸã«ãŸãã¿ããªã®åã貞ããŠæ¬²ããã®ïŒã

ããã£ãã¢ã³ã±ãŒããã¢ã€ãã£ã¢åºããïŒ
ä»åã¯äœãåéãããã ïŒã

ãç§ïŒãã€ãïŒãæŠéã§äœ¿ããã¹ãã«ãããã¿ããªã«èããŠæ¬²ããã®ïŒã

ãæŠéã¹ãã«ãâŠã
å
·äœçã«ã¯ã©ããªã¢ã€ãã£ã¢ã欲ãããã ïŒã

ãããããâŠæ»æããµããŒããå埩âŠåºæ¬çã«ã¯äœã§ãã¢ãªãïŒã

ãã«ãã³ããçéã®æãããã¯ã¹ããšç¬ããé¢çœãååã广ãŸã§ã
çããã®èªç±ãªã¢ã€ãã£ã¢ãã©ãã©ã欲ããã®ïŒ
ãŸããã€ãã®ããã«ã«ããããªæãã§æžããŠãããããšå¬ãããã
ãã¹ãã«åéãã³ãã¬ãŒãã
ã»ã¹ãã«åïŒãã¡ã€ã¢ããŒã«
ã»å°çšïŒé ããŸã§ïŒâ»ã2ãã¹å ããªã©ã®è¡šçŸã§ãOKïŒïŒ
ã»å¹æïŒå¯Ÿè±¡ã«å°ãã¡ãŒãž

ããªãã»ã©ãªãæžã蟌ãæã®ææ¥ã¯ã©ãããïŒã

ãä»åã¯ã4/28(ç«) ãç· ãåãã«ãããŠãããããã

ãã ããã ãïŒããŸãããé æ
®ã¯ç¡çšã ïŒ
ãã³ãã³ãã£ããã¹ãã«ããã€ãã«èããŠãã£ãŠããããªïŒ
ã¢ã€ãã£ã¢ã¯äžã®RunPenãæŒããŠæžããŠããããªïŒ
åŸ
ã£ãŠããïŒã
æåŸã«
ããããŠã第2é±ç®ã®åæ¥ããææ¶ã®å¢ãã§ã·ã¹ãã ãç©ã¿äžããŠãã£ããã€ãã
ããŸããŸãªæ©èœãæ§ç¯ããŠããäžã§ã
éãããã2æéããšããéçºæ ã«ãåŸã
ã«é å¿ãã確ããªæå¿ããæŽã¿å§ããŠããã
極ãã€ãã¯ãClaudeããã®åãåããŠå¯ãã«ä»èŸŒãã§ãããæŠéã·ã¹ãã ã®GridMapçæããžãã¯ã
Gizmoäžã«æµ®ãã³äžãã£ãè²ãšãã©ãã®ãã¹ç®ã¯ãäžèŠãããšãã ã®åè§ãéåäœãããããªãã
ããã©ããã¯çŽãããªããã·ãã¥ã¬ãŒã·ã§ã³RPGã®å¿èéšã確ãã«èæã¡å§ãã蚌ãªã®ã ã
仿¥äœãäžããGridMapãšããåå°ã®äžã§ãæãããŠã©ããªç±ãããã«ãå±éãããã®ãïŒïŒ
ãããŠãæªç¥ã®é åã§ãããã·ãã¥ã¬ãŒã·ã§ã³RPGã®éçºããšããæå€§ã®å£ã«ããã€ãã¯ã©ãæãã§ããã®ãïŒïŒ
次åããã©ããä¹ããæåŸ ïŒ
#ãããžã§ã¯ãNeith #HorizonNotes #ã²ãŒã å¶äœ #å人éçº #Unity #éçºæ¥èš #èªè åå å #æ¯æ¥note
ãããªãšæã£ããå¿æŽãããïŒ
ãããããã°å¿æŽãé¡ãããŸãïŒ
ããã ãããããã¯ã¯ãªãšã€ã¿ãŒãšããŠã®ã²ãŒã éçºã«äœ¿ãããŠããã ããŸãïŒ
â»ããããšå
±ã«ãã£ãŠæ¬²ããäºããã£ããèšã£ãŠãã ããïŒ
å¯èœãªç¯å²ã§ããã°é 匵ããŸã