Updated SkyWalker
This commit is contained in:
parent
e41bedb4e1
commit
fc8f230187
@ -15,8 +15,8 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
|
|
||||||
[Header("Heaven Tween")]
|
[Header("Heaven Tween")]
|
||||||
public float heavenHeight = 4f; // ascent height
|
public float heavenHeight = 4f; // ascent height
|
||||||
public float ascendDuration = 2.5f; // ascent time
|
public float ascendDuration = 2.5f; // ascent time
|
||||||
public float fadeDelay = 2.0f; // wait before fade (2–3s)
|
public float fadeDelay = 2.0f; // wait before fade (2–3s)
|
||||||
public float fadeDuration = 0.5f; // fade to 1
|
public float fadeDuration = 0.5f; // fade to 1
|
||||||
|
|
||||||
[Header("Material (AllIn1SpriteShader)")]
|
[Header("Material (AllIn1SpriteShader)")]
|
||||||
@ -27,23 +27,26 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
// AllIn1SpriteShader property IDs
|
// AllIn1SpriteShader property IDs
|
||||||
static readonly int ID_FadeAmount = Shader.PropertyToID("_FadeAmount");
|
static readonly int ID_FadeAmount = Shader.PropertyToID("_FadeAmount");
|
||||||
static readonly int ID_FadeBurnWidth = Shader.PropertyToID("_FadeBurnWidth");
|
static readonly int ID_FadeBurnWidth = Shader.PropertyToID("_FadeBurnWidth");
|
||||||
|
static readonly int ID_GreyscaleBlend = Shader.PropertyToID("_GreyscaleBlend"); // <-- added
|
||||||
|
static readonly int ID_GhostBlend = Shader.PropertyToID("_GhostBlend"); // <-- added
|
||||||
|
|
||||||
// AllIn1SpriteShader keywords
|
// AllIn1SpriteShader keywords (kept; safe even if features are enabled on the asset)
|
||||||
const string KW_FADE = "FADE_ON";
|
const string KW_FADE = "FADE_ON";
|
||||||
const string KW_GREYSCALE = "GREYSCALE_ON";
|
const string KW_GREYSCALE = "GREYSCALE_ON";
|
||||||
const string KW_GHOST = "GHOST_ON";
|
const string KW_GHOST = "GHOST_ON";
|
||||||
const string KW_OVERLAY = "OVERLAY_ON";
|
const string KW_OVERLAY = "OVERLAY_ON";
|
||||||
const string KW_OVERLAYMULT = "OVERLAYMULT_ON"; // we'll keep this OFF unless you want multiply overlay
|
const string KW_OVERLAYMULT = "OVERLAYMULT_ON";
|
||||||
|
|
||||||
// store original keyword states so we can restore on disable
|
// store original keyword states so we can restore on disable
|
||||||
bool origFade, origGrey, origGhost, origOverlay, origOverlayMult;
|
bool origFade, origGrey, origGhost, origOverlay, origOverlayMult;
|
||||||
|
|
||||||
Sequence deathSeq;
|
Sequence deathSeq;
|
||||||
|
|
||||||
// --- Blueberry Glow Pulse (AllIn1SpriteShader) ---
|
// --- Blueberry Glow Pulse (AllIn1SpriteShader) ---
|
||||||
[Header("Blueberry Glow Pulse")]
|
[Header("Blueberry Glow Pulse")]
|
||||||
public Material glowMaterial; // optional: defaults to playerMaterial if null
|
public Material glowMaterial; // optional: defaults to playerMaterial if null
|
||||||
[Tooltip("Shader float property for glow intensity (AllIn1SpriteShader).")]
|
[Tooltip("Shader float property for glow intensity (AllIn1SpriteShader).")]
|
||||||
public string glowIntensityProp = "_GlowIntensity"; // change to your exact prop name if different
|
public string glowIntensityProp = "_Glow"; // <-- default corrected to _Glow
|
||||||
public float glowBase = 1.75f;
|
public float glowBase = 1.75f;
|
||||||
public float glowPeak = 7.75f;
|
public float glowPeak = 7.75f;
|
||||||
public float glowPulseDuration = 0.6f; // total time (up + down)
|
public float glowPulseDuration = 0.6f; // total time (up + down)
|
||||||
@ -51,6 +54,7 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
private Sequence glowSeq;
|
private Sequence glowSeq;
|
||||||
private int _ID_GlowIntensity;
|
private int _ID_GlowIntensity;
|
||||||
private string _lastGlowPropName;
|
private string _lastGlowPropName;
|
||||||
|
static readonly int ID_OverlayBlend = Shader.PropertyToID("_OverlayBlend");
|
||||||
|
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
@ -62,6 +66,7 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
if (!glowMaterial) glowMaterial = playerMaterial;
|
if (!glowMaterial) glowMaterial = playerMaterial;
|
||||||
_ID_GlowIntensity = Shader.PropertyToID(glowIntensityProp);
|
_ID_GlowIntensity = Shader.PropertyToID(glowIntensityProp);
|
||||||
_lastGlowPropName = glowIntensityProp;
|
_lastGlowPropName = glowIntensityProp;
|
||||||
|
|
||||||
CacheOriginalKeywordStates();
|
CacheOriginalKeywordStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,9 +127,11 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
rb.useGravity = false;
|
rb.useGravity = false;
|
||||||
rb.isKinematic = true;
|
rb.isKinematic = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PulseBlueberryGlow()
|
public void PulseBlueberryGlow()
|
||||||
{
|
{
|
||||||
if (!glowMaterial) return;
|
if (!glowMaterial) return;
|
||||||
|
|
||||||
// Refresh property ID if you change the prop name in the Inspector
|
// Refresh property ID if you change the prop name in the Inspector
|
||||||
if (_lastGlowPropName != glowIntensityProp || _ID_GlowIntensity == 0)
|
if (_lastGlowPropName != glowIntensityProp || _ID_GlowIntensity == 0)
|
||||||
{
|
{
|
||||||
@ -141,14 +148,8 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
float half = Mathf.Max(0.01f, glowPulseDuration * 0.5f);
|
float half = Mathf.Max(0.01f, glowPulseDuration * 0.5f);
|
||||||
|
|
||||||
glowSeq = DOTween.Sequence().SetId("BlueberryGlow")
|
glowSeq = DOTween.Sequence().SetId("BlueberryGlow")
|
||||||
.Append(glowMaterial
|
.Append(glowMaterial.DOFloat(glowPeak, _ID_GlowIntensity, half).SetEase(Ease.OutQuad).SetId("BlueberryGlow"))
|
||||||
.DOFloat(glowPeak, _ID_GlowIntensity, half)
|
.Append(glowMaterial.DOFloat(glowBase, _ID_GlowIntensity, half).SetEase(Ease.InQuad).SetId("BlueberryGlow"));
|
||||||
.SetEase(Ease.OutQuad)
|
|
||||||
.SetId("BlueberryGlow"))
|
|
||||||
.Append(glowMaterial
|
|
||||||
.DOFloat(glowBase, _ID_GlowIntensity, half)
|
|
||||||
.SetEase(Ease.InQuad)
|
|
||||||
.SetId("BlueberryGlow"));
|
|
||||||
|
|
||||||
glowSeq.Play();
|
glowSeq.Play();
|
||||||
}
|
}
|
||||||
@ -166,7 +167,7 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
BeginHeavenSequence(laserStyle: true);
|
BeginHeavenSequence(laserStyle: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GameoverInvoker(int duration=5)
|
public void GameoverInvoker(int duration = 5)
|
||||||
{
|
{
|
||||||
CancelInvoke(nameof(GameoverPanelEnabler));
|
CancelInvoke(nameof(GameoverPanelEnabler));
|
||||||
Invoke(nameof(GameoverPanelEnabler), duration);
|
Invoke(nameof(GameoverPanelEnabler), duration);
|
||||||
@ -177,38 +178,41 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
if (gameOverPanel) gameOverPanel.SetActive(true);
|
if (gameOverPanel) gameOverPanel.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------- Tweens + Shader toggles --------
|
// -------- Tweens + Shader toggles / values --------
|
||||||
void BeginHeavenSequence(bool laserStyle)
|
void BeginHeavenSequence(bool laserStyle)
|
||||||
{
|
{
|
||||||
if (deathSeq != null && deathSeq.IsActive()) deathSeq.Kill();
|
if (deathSeq != null && deathSeq.IsActive()) deathSeq.Kill();
|
||||||
if (playerMaterial) DOTween.Kill(playerMaterial);
|
if (playerMaterial) DOTween.Kill(playerMaterial);
|
||||||
|
|
||||||
// Enable FADE keyword for both styles
|
|
||||||
if (playerMaterial)
|
if (playerMaterial)
|
||||||
{
|
{
|
||||||
playerMaterial.EnableKeyword(KW_FADE);
|
playerMaterial.EnableKeyword(KW_FADE);
|
||||||
|
|
||||||
// Style-specific keywords
|
|
||||||
if (laserStyle)
|
if (laserStyle)
|
||||||
{
|
{
|
||||||
// Laser: Overlay + Ghost, NO Greyscale
|
// Laser: Overlay + Ghost, NO Greyscale
|
||||||
playerMaterial.DisableKeyword(KW_GREYSCALE);
|
playerMaterial.DisableKeyword(KW_GREYSCALE);
|
||||||
playerMaterial.EnableKeyword(KW_OVERLAY);
|
playerMaterial.EnableKeyword(KW_OVERLAY);
|
||||||
playerMaterial.DisableKeyword(KW_OVERLAYMULT); // keep overlay in normal blend; enable if you prefer multiply
|
playerMaterial.DisableKeyword(KW_OVERLAYMULT);
|
||||||
playerMaterial.EnableKeyword(KW_GHOST);
|
playerMaterial.EnableKeyword(KW_GHOST);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Spikes: Greyscale + Ghost, NO Overlay
|
// Spikes: Greyscale + Ghost, NO Overlay (+ make sure OVERLAYMULT is OFF)
|
||||||
playerMaterial.EnableKeyword(KW_GREYSCALE);
|
playerMaterial.EnableKeyword(KW_GREYSCALE);
|
||||||
playerMaterial.DisableKeyword(KW_OVERLAY);
|
playerMaterial.DisableKeyword(KW_OVERLAY);
|
||||||
playerMaterial.DisableKeyword(KW_OVERLAYMULT);
|
playerMaterial.DisableKeyword(KW_OVERLAYMULT);
|
||||||
playerMaterial.EnableKeyword(KW_GHOST);
|
playerMaterial.EnableKeyword(KW_GHOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we start visible before fade
|
// Ensure visible before fade
|
||||||
playerMaterial.SetFloat(ID_FadeAmount, -0.1f);
|
playerMaterial.SetFloat(ID_FadeAmount, -0.1f);
|
||||||
if (!laserStyle) playerMaterial.SetFloat(ID_FadeBurnWidth, 0f);
|
if (!laserStyle) playerMaterial.SetFloat(ID_FadeBurnWidth, 0f);
|
||||||
|
|
||||||
|
// Start blends from zero so tweens are visible
|
||||||
|
playerMaterial.SetFloat(ID_GreyscaleBlend, 0f);
|
||||||
|
playerMaterial.SetFloat(ID_GhostBlend, 0f);
|
||||||
|
playerMaterial.SetFloat(ID_OverlayBlend, 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 endPos = player.transform.position + Vector3.up * heavenHeight;
|
Vector3 endPos = player.transform.position + Vector3.up * heavenHeight;
|
||||||
@ -217,19 +221,42 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
|
|
||||||
if (laserStyle && playerMaterial)
|
if (laserStyle && playerMaterial)
|
||||||
{
|
{
|
||||||
// Laser: widen burn first
|
// Start ALL laser visuals together:
|
||||||
deathSeq.Append(playerMaterial.DOFloat(1f, ID_FadeBurnWidth, 0.5f));
|
// - BurnWidth widens (0.5s)
|
||||||
|
// - Ghost 0 -> 0.65 (0.35s)
|
||||||
|
// - Overlay 0 -> 1.0 (0.35s)
|
||||||
|
deathSeq.Append(playerMaterial.DOFloat(1f, ID_FadeBurnWidth, 0.5f)); // append first
|
||||||
|
deathSeq.Join(playerMaterial.DOFloat(0.65f, ID_GhostBlend, 0.35f).SetEase(Ease.OutQuad));
|
||||||
|
deathSeq.Join(playerMaterial.DOFloat(1.0f, ID_OverlayBlend, 0.35f).SetEase(Ease.OutQuad));
|
||||||
|
}
|
||||||
|
else if (playerMaterial)
|
||||||
|
{
|
||||||
|
// Spikes: Greyscale 0 -> 0.7, Ghost 0 -> 0.65 together
|
||||||
|
deathSeq.Join(playerMaterial.DOFloat(0.7f, ID_GreyscaleBlend, 0.35f).SetEase(Ease.OutQuad));
|
||||||
|
deathSeq.Join(playerMaterial.DOFloat(0.65f, ID_GhostBlend, 0.35f).SetEase(Ease.OutQuad));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Float up like an angel
|
// Float up like an angel
|
||||||
deathSeq.Append(player.transform.DOMoveY(endPos.y, ascendDuration).SetEase(Ease.OutSine));
|
deathSeq.Append(player.transform.DOMoveY(endPos.y, ascendDuration).SetEase(Ease.OutSine));
|
||||||
|
|
||||||
// Wait before final fade
|
// Wait before final fade
|
||||||
deathSeq.AppendInterval(fadeDelay);
|
deathSeq.AppendInterval(fadeDelay);
|
||||||
|
|
||||||
// Final fade to 1
|
// Final fade to 1
|
||||||
if (playerMaterial)
|
if (playerMaterial)
|
||||||
deathSeq.Append(playerMaterial.DOFloat(1f, ID_FadeAmount, fadeDuration));
|
{
|
||||||
|
if (laserStyle)
|
||||||
|
{
|
||||||
|
// Laser: fade out AND shrink burn width back to 0 at the same time
|
||||||
|
deathSeq.Append(playerMaterial.DOFloat(1f, ID_FadeAmount, fadeDuration));
|
||||||
|
deathSeq.Join(playerMaterial.DOFloat(0f, ID_FadeBurnWidth, fadeDuration)); // <- new
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Spikes: just fade out
|
||||||
|
deathSeq.Append(playerMaterial.DOFloat(1f, ID_FadeAmount, fadeDuration));
|
||||||
|
}
|
||||||
|
}
|
||||||
deathSeq.Play();
|
deathSeq.Play();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,12 +265,15 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (deathSeq != null && deathSeq.IsActive()) deathSeq.Kill();
|
if (deathSeq != null && deathSeq.IsActive()) deathSeq.Kill();
|
||||||
DOTween.Kill(playerMaterial);
|
DOTween.Kill(playerMaterial);
|
||||||
|
playerMaterial.SetFloat(ID_OverlayBlend, 0f);
|
||||||
if (playerMaterial)
|
if (playerMaterial)
|
||||||
{
|
{
|
||||||
// revert fade values
|
// revert fade values
|
||||||
playerMaterial.SetFloat(ID_FadeAmount, 0f);
|
playerMaterial.SetFloat(ID_FadeAmount, 0f);
|
||||||
playerMaterial.SetFloat(ID_FadeBurnWidth, 0f);
|
playerMaterial.SetFloat(ID_FadeBurnWidth, 0f);
|
||||||
|
// revert blends
|
||||||
|
playerMaterial.SetFloat(ID_GreyscaleBlend, 0f);
|
||||||
|
playerMaterial.SetFloat(ID_GhostBlend, 0f);
|
||||||
|
|
||||||
// restore original keywords
|
// restore original keywords
|
||||||
SetKeyword(playerMaterial, KW_FADE, origFade);
|
SetKeyword(playerMaterial, KW_FADE, origFade);
|
||||||
@ -256,7 +286,6 @@ public class Skywalker_GameManager : MonoBehaviour
|
|||||||
if (glowSeq != null && glowSeq.IsActive()) glowSeq.Kill();
|
if (glowSeq != null && glowSeq.IsActive()) glowSeq.Kill();
|
||||||
DOTween.Kill("BlueberryGlow");
|
DOTween.Kill("BlueberryGlow");
|
||||||
if (glowMaterial) glowMaterial.SetFloat(_ID_GlowIntensity, glowBase);
|
if (glowMaterial) glowMaterial.SetFloat(_ID_GlowIntensity, glowBase);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SetKeyword(Material m, string keyword, bool enabled)
|
static void SetKeyword(Material m, string keyword, bool enabled)
|
||||||
|
|||||||
@ -13,9 +13,12 @@ Material:
|
|||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords:
|
m_ValidKeywords:
|
||||||
- FADE_ON
|
- FADE_ON
|
||||||
|
- GHOST_ON
|
||||||
- GLOWTEX_ON
|
- GLOWTEX_ON
|
||||||
- GLOW_ON
|
- GLOW_ON
|
||||||
- GREYSCALEOUTLINE_ON
|
- GREYSCALEOUTLINE_ON
|
||||||
|
- GREYSCALE_ON
|
||||||
|
- OVERLAY_ON
|
||||||
m_InvalidKeywords:
|
m_InvalidKeywords:
|
||||||
- _GREYSCALEOUTLINE_ON
|
- _GREYSCALEOUTLINE_ON
|
||||||
m_LightmapFlags: 4
|
m_LightmapFlags: 4
|
||||||
@ -149,14 +152,14 @@ Material:
|
|||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
- _EditorDrawers: 6
|
- _EditorDrawers: 6
|
||||||
- _FadeAmount: 0
|
- _FadeAmount: 0
|
||||||
- _FadeBurnGlow: 3
|
- _FadeBurnGlow: 1
|
||||||
- _FadeBurnTransition: 0.01
|
- _FadeBurnTransition: 0.01
|
||||||
- _FadeBurnWidth: 0
|
- _FadeBurnWidth: 0
|
||||||
- _FishEyeUvAmount: 0.35
|
- _FishEyeUvAmount: 0.35
|
||||||
- _FlickerAlpha: 0
|
- _FlickerAlpha: 0
|
||||||
- _FlickerFreq: 0.2
|
- _FlickerFreq: 0.2
|
||||||
- _FlickerPercent: 0.05
|
- _FlickerPercent: 0.05
|
||||||
- _GhostBlend: 0.524
|
- _GhostBlend: 0
|
||||||
- _GhostColorBoost: 5
|
- _GhostColorBoost: 5
|
||||||
- _GhostTransparency: 1
|
- _GhostTransparency: 1
|
||||||
- _GlitchAmount: 3
|
- _GlitchAmount: 3
|
||||||
@ -175,8 +178,8 @@ Material:
|
|||||||
- _GrassRadialBend: 0.1
|
- _GrassRadialBend: 0.1
|
||||||
- _GrassSpeed: 2
|
- _GrassSpeed: 2
|
||||||
- _GrassWind: 20
|
- _GrassWind: 20
|
||||||
- _GreyscaleBlend: 1
|
- _GreyscaleBlend: 0
|
||||||
- _GreyscaleLuminosity: 1
|
- _GreyscaleLuminosity: 0.7
|
||||||
- _GreyscaleOutline: 1
|
- _GreyscaleOutline: 1
|
||||||
- _HandDrawnAmount: 10
|
- _HandDrawnAmount: 10
|
||||||
- _HandDrawnSpeed: 5
|
- _HandDrawnSpeed: 5
|
||||||
@ -219,8 +222,8 @@ Material:
|
|||||||
- _OutlineTexXSpeed: 10
|
- _OutlineTexXSpeed: 10
|
||||||
- _OutlineTexYSpeed: 0
|
- _OutlineTexYSpeed: 0
|
||||||
- _OutlineWidth: 0.004
|
- _OutlineWidth: 0.004
|
||||||
- _OverlayBlend: 1
|
- _OverlayBlend: 0
|
||||||
- _OverlayGlow: 5.8
|
- _OverlayGlow: 3.9
|
||||||
- _Parallax: 0.02
|
- _Parallax: 0.02
|
||||||
- _PinchUvAmount: 0.35
|
- _PinchUvAmount: 0.35
|
||||||
- _PixelateSize: 32
|
- _PixelateSize: 32
|
||||||
|
|||||||
@ -47,7 +47,7 @@ PlayerSettings:
|
|||||||
defaultScreenWidthWeb: 960
|
defaultScreenWidthWeb: 960
|
||||||
defaultScreenHeightWeb: 600
|
defaultScreenHeightWeb: 600
|
||||||
m_StereoRenderingPath: 0
|
m_StereoRenderingPath: 0
|
||||||
m_ActiveColorSpace: 1
|
m_ActiveColorSpace: 0
|
||||||
unsupportedMSAAFallback: 0
|
unsupportedMSAAFallback: 0
|
||||||
m_SpriteBatchVertexThreshold: 300
|
m_SpriteBatchVertexThreshold: 300
|
||||||
m_MTRendering: 1
|
m_MTRendering: 1
|
||||||
@ -536,7 +536,7 @@ PlayerSettings:
|
|||||||
m_Automatic: 1
|
m_Automatic: 1
|
||||||
- m_BuildTarget: WebGLSupport
|
- m_BuildTarget: WebGLSupport
|
||||||
m_APIs: 0b000000
|
m_APIs: 0b000000
|
||||||
m_Automatic: 1
|
m_Automatic: 0
|
||||||
m_BuildTargetVRSettings:
|
m_BuildTargetVRSettings:
|
||||||
- m_BuildTarget: Standalone
|
- m_BuildTarget: Standalone
|
||||||
m_Enabled: 0
|
m_Enabled: 0
|
||||||
@ -828,7 +828,7 @@ PlayerSettings:
|
|||||||
webGLWasmArithmeticExceptions: 0
|
webGLWasmArithmeticExceptions: 0
|
||||||
webGLLinkerTarget: 1
|
webGLLinkerTarget: 1
|
||||||
webGLThreadsSupport: 0
|
webGLThreadsSupport: 0
|
||||||
webGLDecompressionFallback: 0
|
webGLDecompressionFallback: 1
|
||||||
webGLInitialMemorySize: 32
|
webGLInitialMemorySize: 32
|
||||||
webGLMaximumMemorySize: 2048
|
webGLMaximumMemorySize: 2048
|
||||||
webGLMemoryGrowthMode: 2
|
webGLMemoryGrowthMode: 2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user