Tune tutorial coin arcs and finish flow

This commit is contained in:
jongjae0305
2026-07-06 17:34:13 +09:00
parent 2ba3882f1b
commit 5423382296
17 changed files with 266 additions and 65 deletions
+67 -21
View File
@@ -1,12 +1,15 @@
using TMPro;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public enum FinishGateStyle {
None,
AirportDeparture,
JapanTorii,
ChinaPaifang,
AmericaRoadSign
AmericaLiberty
}
public class FinishGate : MonoBehaviour {
@@ -75,8 +78,8 @@ public class FinishGate : MonoBehaviour {
case FinishGateStyle.ChinaPaifang:
BuildChinaPaifang();
break;
case FinishGateStyle.AmericaRoadSign:
BuildAmericaRoadSign();
case FinishGateStyle.AmericaLiberty:
BuildAmericaLibertyFallback();
break;
case FinishGateStyle.AirportDeparture:
default:
@@ -98,19 +101,7 @@ public class FinishGate : MonoBehaviour {
return false;
}
Sprite sprite = Resources.Load<Sprite>(resourcePath);
if(sprite == null)
{
Texture2D texture = Resources.Load<Texture2D>(resourcePath);
if(texture != null)
{
sprite = Sprite.Create(
texture,
new Rect(0f, 0f, texture.width, texture.height),
new Vector2(0.5f, 0.5f),
RuntimeSpritePixelsPerUnit);
}
}
Sprite sprite = LoadGateSprite(resourcePath);
if(sprite == null)
{
@@ -129,10 +120,55 @@ public class FinishGate : MonoBehaviour {
float spriteHeight = Mathf.Max(0.01f, sprite.bounds.size.y);
float scale = targetHeight / spriteHeight;
spriteObject.transform.localScale = new Vector3(scale, scale, 1f);
spriteObject.transform.localPosition = new Vector3(0f, targetHeight * 0.5f, 0f);
spriteObject.transform.localPosition = new Vector3(0f, targetHeight * 0.5f - GetSpriteGateBottomInset(style), 0f);
return true;
}
private Sprite LoadGateSprite(string resourcePath) {
Sprite sprite = Resources.Load<Sprite>(resourcePath);
if(sprite != null)
{
return sprite;
}
Sprite[] sprites = Resources.LoadAll<Sprite>(resourcePath);
if(sprites != null && sprites.Length > 0 && sprites[0] != null)
{
return sprites[0];
}
Texture2D texture = Resources.Load<Texture2D>(resourcePath);
if(texture != null)
{
return CreateRuntimeSprite(texture);
}
#if UNITY_EDITOR
string assetPath = "Assets/Resources/" + resourcePath + ".png";
sprite = AssetDatabase.LoadAssetAtPath<Sprite>(assetPath);
if(sprite != null)
{
return sprite;
}
texture = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);
if(texture != null)
{
return CreateRuntimeSprite(texture);
}
#endif
return null;
}
private Sprite CreateRuntimeSprite(Texture2D texture) {
return Sprite.Create(
texture,
new Rect(0f, 0f, texture.width, texture.height),
new Vector2(0.5f, 0.5f),
RuntimeSpritePixelsPerUnit);
}
private string GetSpriteResourcePath(FinishGateStyle style) {
switch(style)
{
@@ -142,8 +178,8 @@ public class FinishGate : MonoBehaviour {
return "FinishGate_Japan_Torii";
case FinishGateStyle.ChinaPaifang:
return "FinishGate_China_Paifang";
case FinishGateStyle.AmericaRoadSign:
return "FinishGate_America_Highway";
case FinishGateStyle.AmericaLiberty:
return "FinishGate_America_Liberty";
default:
return "";
}
@@ -154,13 +190,23 @@ public class FinishGate : MonoBehaviour {
{
case FinishGateStyle.ChinaPaifang:
return 4.65f;
case FinishGateStyle.AmericaRoadSign:
case FinishGateStyle.AmericaLiberty:
return 4.45f;
default:
return 4.35f;
}
}
private float GetSpriteGateBottomInset(FinishGateStyle style) {
switch(style)
{
case FinishGateStyle.JapanTorii:
return 0.36f;
default:
return 0f;
}
}
private void BuildAirportDepartureGate() {
Color navy = new Color(0.05f, 0.2f, 0.34f, 1f);
Color blue = new Color(0.08f, 0.42f, 0.67f, 1f);
@@ -212,7 +258,7 @@ public class FinishGate : MonoBehaviour {
CreateBlock("Paifang Lantern Right", new Vector2(0.78f, 2.18f), new Vector2(0.26f, 0.34f), red, 7);
}
private void BuildAmericaRoadSign() {
private void BuildAmericaLibertyFallback() {
Color metal = new Color(0.48f, 0.56f, 0.58f, 1f);
Color green = new Color(0.03f, 0.38f, 0.22f, 1f);
Color yellow = new Color(1f, 0.8f, 0.18f, 1f);