Fade In and translucency issue

Ask about ACS, DECORATE, ZScript, or any other scripting questions here!
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.

Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Post Reply
User avatar
Doomedarchviledemon
Posts: 31
Joined: Tue Jul 05, 2011 9:17 pm

Fade In and translucency issue

Post by Doomedarchviledemon »

I am trying to make a Snow Cloud fade into existence but for some reason when they are spawned they don't fade in. In fact, it doesn't seem like anything that I set to be translucent is working for some reason. I've set everything up in the same way I had one of my other projects (a monster instead of a weapon) and it worked just fine, translucency and all. So I am unsure what I am doing wrong here.

Any help would be appreciated.

This is the current code for the weapon.

Code: Select all

Actor SnowTest : Weapon  //Rename this!!!
{
  Scale 0.75
  Obituary "%o was splattered by %k pistol"
  Radius 20
  Height 16
  AttackSound "Weapon/PistolFire"
  Inventory.pickupmessage "You got the Pistol"
  Weapon.SelectionOrder 400
  Weapon.SlotNumber 2
  Weapon.kickback 100
  Weapon.ammotype "CLIP"
  Weapon.ammouse 1 
  Weapon.ammogive 25
  States
  {
  Spawn:
    2PIS E -1
    Loop
  Ready:
    2PIS A 2 A_WeaponReady
    Loop
  Deselect:
    2PIS D 1 A_Lower
    Loop
  Select:
    2PIS F 1 A_Raise
    Loop
  Fire:
    2PIS A 1    
    2PIS B 4 bright A_SpawnItemEx("SnowStart",0,0,0,0,0,5)
    2PIS C 4 
    2PIS F 4
    2PIS D 4 A_ReFire
    Goto Ready
  AltFire:
	2PIS A 1    
    2PIS B 4 bright A_SpawnItemEx("Snowcloud",0,0,0,0,0,5)
    2PIS C 4 
    2PIS F 4
    2PIS D 4 A_ReFire
	Goto Ready
  }
} 

Actor SnowStart
{
	Radius 1
	Height 1
	Speed 5
	RenderStyle Translucent
	Alpha 0.1
	Scale 0.6
	Projectile
	+MISSILE 
	+NOBLOCKMAP
	+NOGRAVITY
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.3, 0.6))
		SNOW AAAAAAA 2 A_FadeIn(0.1)
		SNOW A 3
		loop
		Death:
		SNOW A 1 A_FadeOut(0.05)
		TNT1 AAAAAAAAAA 0 A_SpawnItem("SnowSpawner")
		Stop
	}
}

Actor SnowParticle
{
	Radius 1
	Height 1
	Damage 1
	RenderStyle Translucent
	Alpha 0
	Scale 0.6
	Projectile
	+MISSILE 
	+NOBLOCKMAP
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.3, 0.6))
		SNOW AAAAAAA 2 A_FadeIn(0.1)
		SNOW A 3
		loop
		Death:
		SNOW A 1 A_FadeOut(0.05)
		loop
	}
}

Actor SnowSpawner
{
	Radius 1
	Height 1

	+NOBLOCKMAP
	+NOGRAVITY
	+NOSECTOR
	+NOINTERACTION
	+NOCLIP
	-SOLID
	+SPAWNCEILING
	States
	{
	Spawn:
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("Snowcloud", Random(-300, 300), Random(-300, 300), -30, 0, 0, 0, 0, 0, 0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("SnowParticle", Random(-300, 300), Random(-300, 300), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, -3.0), 0, 0, 0)
		Stop
		}
}

Actor Snowcloud
{
 Radius 0
 Height 0
 RenderStyle Translucent
 Alpha 0.5
 Scale 1
 +NoGravity
 +NoBlockmap
 +NoInteraction
 -Solid
 States
	{
	Spawn:
		SNCL A 0 A_SetTranslucent(0,0)
		SNCL A 7 A_FadeIn(1,0)
		SNCL B 7 A_FadeIn(0.9,0)
		SNCL C 7 A_FadeIn(0.8,0)
		SNCL D 7 A_FadeIn(0.7,0)
		SNCL E 7 A_FadeIn(0.6,0)
		SNCL A 7 A_FadeIn(0.5,0)
		SNCL B 7 A_FadeIn(0.4,0)
		SNCL C 7 A_FadeIn(0.3,0)
		SNCL D 7 A_FadeIn(0.2,0)
		SNCL E 7 A_FadeIn(0.1,0)
		SNCL A 7 A_FadeIn(0,0)
		SNCL B 0 A_SetTranslucent(0.5,0)
		SNCL CDEABCDEABCDEABCDE 7
		SNCL A 7 A_FadeOut(0.1,0)
		SNCL B 7 A_FadeOut(0.2,0)
		SNCL C 7 A_FadeOut(0.3,0)
		SNCL D 7 A_FadeOut(0.4,0)
		SNCL E 7 A_FadeOut(0.5,0)
		SNCL A 7 A_FadeOut(0.6,0)
		SNCL B 7 A_FadeOut(0.7,0)
		SNCL C 7 A_FadeOut(0.8,0)
		SNCL D 7 A_FadeOut(0.9,0)
		SNCL E 7 A_FadeOut(1,0)
		Stop
		}
}
User avatar
Amuscaria
Posts: 6634
Joined: Mon Jul 26, 2004 12:59 pm
Location: Growing from mycelium near you.

Re: Fade In and translucency issue

Post by Amuscaria »

FaceIn increases the alpha/opacity by a the specified amount, from w/e the opacity was when the action is called.

Your first action for SnowCloud is "SNCL A 7 A_FadeIn(1,0)", which already sets the cloud to 100% opacity. The Fade In actions thereafter will do nothing if its already 100%.

You're also confusing A_FadeIn/A_FadeOut with A_SetTranslucent, I think. It looks like you're trying to increase/decrease the opacity by 0.1 (10%) each call, but you're treating it as if the function sets the opacity to a specific amount, instead of increasing/decreasing it. If you want to increase the opacity by 10% each time, you need to do this:

Actor Snowcloud
{
Radius 0
Height 0
RenderStyle Translucent
Alpha 0.0 <= set the alpha/opacity to 0% here
Scale 1
+NoGravity
+NoBlockmap
+NoInteraction
-Solid
States
{
Spawn:
SNCL A 0 A_SetTranslucent(0,0) //<=== don't need this since you already set alpha to 0.0 in the properties.
SNCL A 7 A_FadeIn(0.1) //10%
SNCL B 7 A_FadeIn(0.1) //20%
SNCL C 7 A_FadeIn(0.1) //30%
SNCL D 7 A_FadeIn(0.1) //40%
SNCL E 7 A_FadeIn(0.1) //50%
SNCL A 7 A_FadeIn(0.1) //60%
SNCL B 7 A_FadeIn(0.1) //70%
SNCL C 7 A_FadeIn(0.1) //80%
SNCL D 7 A_FadeIn(0.1) //90%
SNCL E 7 A_FadeIn(0.1) //100% max opacity already.
SNCL A 7 A_FadeIn(0,0) //<=You don't need this. A_FadeIn(0,0) means it doesn't change anything.
SNCL B 0 A_SetTranslucent(0.5,0) //not sure why you're fading in to max opacity, but then setting it back to 50%. I think you want the cloud to fade in to 100%, then fade back to 0%.
SNCL CDEABCDEABCDEABCDE 7 //extraframes not needed since it's faded in already.
SNCL A 7 A_FadeOut(0.1) //90%
SNCL B 7 A_FadeOut(0.1) //80%
SNCL C 7 A_FadeOut(0.1) //70%
SNCL D 7 A_FadeOut(0.1) //60%
SNCL E 7 A_FadeOut(0.1) //50%
SNCL A 7 A_FadeOut(0.1) //40%
SNCL B 7 A_FadeOut(0.1) //30%
SNCL C 7 A_FadeOut(0.1) //20%
SNCL D 7 A_FadeOut(0.1) //10%
SNCL E 7 A_FadeOut(0.1) //0%. Totally invisible
Stop
}


You can shorten your code by doing this:

Code: Select all

Actor Snowcloud
{
 Radius 0
 Height 0
 RenderStyle Translucent
 Alpha 0.0 
 Scale 1
 +NoGravity
 +NoBlockmap
 +NoInteraction
 -Solid
 States
   {
   Spawn:
      SNCL ABCDEABCDE 7 A_FadeIn(0.1)  //fades from 0% to 100%
      SNCL ABCDEABCDEABCDE 7
      SNCL ABCDEABCDE 7 A_FadeOut(0.1)  //fades from 100% to 0%
      Stop
   }
Hope I understood you problem correctly and this helps. :)

Cheers.
User avatar
Doomedarchviledemon
Posts: 31
Joined: Tue Jul 05, 2011 9:17 pm

Re: Fade In and translucency issue

Post by Doomedarchviledemon »

That works perfectly! But I guess I still don't understand why my other project worked just fine with my method and yet didn't work on this one. That's why I did it the way that I did here.

If it's not too much trouble, could some one explain the differences between the Snow Cloud and the below Shadow Hunter I made previously and based my Snow Cloud code off of? Maybe I have it written incorrectly here as well but it works as intended so? :/

Code: Select all

ACTOR ShadowHunter
{
	Health 180
	Radius 16
	Height 56
	Speed 5
	PainChance 50
	+FLOORCLIP
	+CANTSEEK
	+SEEINVISIBLE
	+AVOIDMELEE
	RenderStyle Translucent
	Alpha 0.5
	Monster
	SeeSound "Shadow/Sight"
	DeathSound "Shadow/Death"
	ActiveSound "Shadow/Idle"
	PainSound "Shadow/Pain"
	Obituary "%o didn't see the Shadow Hunter's bullet."
	GibHealth 30
	States
	{
		Spawn:
			SHAH AB 10 A_Look
			loop
		See:
			SHAH AAAA 2 A_Chase
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			SHAH BBBB 2 A_Chase
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			SHAH CCCC 2 A_Chase
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			SHAH DDDD 2 A_Chase
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_JumpIfInTargetLOS("Dodge", 0, JLOSF_DEADNOJUMP, 0, 0)
			loop
		Dodge:
			SHAH A 1 A_FaceTarget
			TNT1 A 0 A_Jump(256, "DodgeRight", "DodgeLeft")
		DodgeLeft:
			TNT1 A 0 ThrustThing(angle*256/360+192, 12, 0, 0)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			Goto See
		DodgeRight:
			TNT1 A 0 ThrustThing(angle*256/360+64, 12, 0, 0)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			Goto See
		Missile:
			SHAG A 20 A_FaceTarget
			SHAG A 1 A_FaceTarget
			TNT1 A 0 A_PlaySound("Shadow/Fire")
			SHAG B 1 A_CustomMissile("ShadowBullet", 32, 0, 0, CMF_OFFSETPITCH, 0)
			SHAG B 5 Bright
			SHAG A 10
			TNT1 A 0 A_Jump(256, "See", "DodgeRight", "DodgeLeft", "Vanish")
		Vanish:
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			SHAH A 0 A_SetInvulnerable
			SHAH A 0 A_Changeflag("Solid",False)
			SHAG A 5 A_FadeOut(0.1,0)
			SHAG A 5 A_FadeOut(0.2,0)
			SHAG A 5 A_FadeOut(0.3,0)
			SHAG A 5 A_FadeOut(0.4,0)
			SHAG A 5 A_FadeOut(0.5,0)
			SHAG A 5 A_FadeOut(0.6,0)
			SHAG A 5 A_FadeOut(0.7,0)
			SHAG A 5 A_FadeOut(0.8,0)
			SHAG A 5 A_FadeOut(0.9,0)
			SHAG A 5 A_FadeOut(1,0)
			SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", TRUE)
			SHAH A 0 A_SetSpeed(20)
			SHAH AAAAAAAAAAAAAAAAAAAA 0 A_Wander
			SHAH A 50
			SHAH A 3 A_FadeIn(1,0)
			SHAH A 3 A_FadeIn(0.9,0)
			SHAH A 3 A_FadeIn(0.8,0)
			SHAH A 3 A_FadeIn(0.7,0)
			SHAH A 3 A_FadeIn(0.6,0)
			SHAH A 3 A_FadeIn(0.5,0)
			SHAH A 3 A_FadeIn(0.4,0)
			SHAH A 3 A_FadeIn(0.3,0)
			SHAH A 3 A_FadeIn(0.2,0)
			SHAH A 3 A_FadeIn(0.1,0)
			SHAH A 3 A_FadeIn(0,0)
			SHAH A 0 A_SetTranslucent(0.5,0)
			SHAH A 0 A_SetSpeed(5)
			SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", False)
			SHAH A 0 A_Changeflag("Solid",True)
			SHAH A 0 A_UnSetInvulnerable
			Goto See
		Pain:
			SHAP A 4 A_Pain
			TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
			SHAH A 0 A_SetInvulnerable
			SHAH A 0 A_Changeflag("Solid",False)
			SHAP A 5 A_FadeOut(0.1,0)
			SHAP A 5 A_FadeOut(0.2,0)
			SHAP A 5 A_FadeOut(0.3,0)
			SHAP A 5 A_FadeOut(0.4,0)
			SHAP A 5 A_FadeOut(0.5,0)
			SHAP A 5 A_FadeOut(0.6,0)
			SHAP A 5 A_FadeOut(0.7,0)
			SHAP A 5 A_FadeOut(0.8,0)
			SHAP A 5 A_FadeOut(0.9,0)
			SHAP A 5 A_FadeOut(1,0)
			SHAP A 0 A_ChangeFlag("NOTAUTOAIMED", TRUE)
			SHAP A 0 A_SetSpeed(30)
			SHAP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
			SHAH A 50
			SHAH A 3 A_FadeIn(1,0)
			SHAH A 3 A_FadeIn(0.9,0)
			SHAH A 3 A_FadeIn(0.8,0)
			SHAH A 3 A_FadeIn(0.7,0)
			SHAH A 3 A_FadeIn(0.6,0)
			SHAH A 3 A_FadeIn(0.5,0)
			SHAH A 3 A_FadeIn(0.4,0)
			SHAH A 3 A_FadeIn(0.3,0)
			SHAH A 3 A_FadeIn(0.2,0)
			SHAH A 3 A_FadeIn(0.1,0)
			SHAH A 3 A_FadeIn(0,0)
			SHAH A 0 A_SetTranslucent(0.5,0)
			SHAH A 0 A_SetSpeed(5)
			SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", False)
			SHAH A 0 A_Changeflag("Solid",True)
			SHAH A 0 A_UnSetInvulnerable
			Goto See
		Death:
			TNT1 A 0 A_PlaySound("Shadow/Death")
			SHAD ABCDE 5
			SHAD E -1
			Stop
		XDeath:
			TNT1 A 0 A_PlaySound("Shadow/Death")
			SHXD ABCDEFGH 4
			SHXD I -1
			Stop
	}
}

ACTOR HuntersDouble
{
	Radius 16
	Height 56
	+FLOORCLIP
	RenderStyle Translucent
	Alpha 0.3
	States
	{
		Spawn:
			SHAH A 10 A_FadeOut(0.1,0)
			SHAH B 10 A_FadeOut(0.2,0)
			SHAH C 10 A_FadeOut(0.3,0)
			SHAH D 10 A_FadeOut(0.4,0)
			SHAH A 10 A_FadeOut(0.5,0)
			SHAH B 10 A_FadeOut(0.6,0)
			SHAH C 10 A_FadeOut(0.7,0)
			SHAH D 10 A_FadeOut(0.8,0)
			SHAH A 10 A_FadeOut(0.9,0)
			SHAH B 10 A_FadeOut(1,0)
			Stop
	}
}
User avatar
Amuscaria
Posts: 6634
Joined: Mon Jul 26, 2004 12:59 pm
Location: Growing from mycelium near you.

Re: Fade In and translucency issue

Post by Amuscaria »

FadeIn/FadeOut functions adds/subtracts the value of the first parameter from the actors alpha value when the action is called. If your starting alpha is 0.5, and you call it A_FadeOut(0.1) 4 times, it make you actor have an alpha of 0.1 (10% opacity). If you call A_FadeOut(0.5) once, it will make it invisible. The opposite is true of A_FadeIn.

I'm assuming you're referring to the "Vanish" state. Your Shadow Hunter 'worked' because your execution is backwards. But I willing to bet it vanishes much sooner than you intended because you have the values wrong. Basically the same problem I mentioned for snow cloud.


You have:
....
Alpha 0.5
...
A_FadeOut(0.1) //50% - 10% = 40%
A_FadeOut(0.2) //40% - 20% = 20%
A_FadeOut(0.3) //20% - 30% < 0% => 0% - already invisible. The 6 actions below it doesn't do anything, but you don't notice since the thing is invisible.
A_FadeOut(0.4)
A_FadeOut(0.5)
A_FadeOut(0.6)
A_FadeOut(0.7)
A_FadeOut(0.8)
A_FadeOut(0.9)
A_FadeOut(1)
...

The FadeIn part shouldn't be working, since it has the same issue as before. I think you should increase the duration of the frames to something like 35, so it's called once per second, to make sure it's actually working with the number of frames intended.

You also don't need to use A_SetTranslucent if the render style is already translucent to by default in Shadow Hunter properties. Only use A_SetTranslucent if you to change the renderstyle to Tranlucent or Translucent-Additive/Subtractive and you want to tweak the alpha value.

Here's a simplified code for the Vanish and paint state that uses the fade actions:

Code: Select all

Vanish:
         TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDouble",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         SHAH A 0 A_SetInvulnerable
         SHAH A 0 A_Changeflag("Solid",False)
         SHAG AAAAA 5 A_FadeOut(0.1) //0.5 subtracting 0.1 5x will render the thing invisible.
         SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", TRUE)
         SHAH A 0 A_SetSpeed(20)
         SHAH AAAAAAAAAAAAAAAAAAAA 0 A_Wander
         SHAH A 50
         SHAH AAAAA 3 A_FadeIn(0.1) //Sets the opacity to 0.5 (50%). You won't need to A_SetTranslucent after this.
         SHAH A 0 A_SetSpeed(5)
         SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", False)
         SHAH A 0 A_Changeflag("Solid",True)
         SHAH A 0 A_UnSetInvulnerable
         Goto See
      Pain:
         SHAP A 4 A_Pain
         TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         TNT1 A 0 A_SpawnItemEx("HuntersDoubleP",0,0,0,random(-10,10),random(-10,10),0,0, SXF_NOCHECKPOSITION)
         SHAH A 0 A_SetInvulnerable
         SHAH A 0 A_Changeflag("Solid",False)
         SHAP AAAAA 5 A_FadeOut(0.1,0)
         SHAP A 0 A_ChangeFlag("NOTAUTOAIMED", TRUE)
         SHAP A 0 A_SetSpeed(30)
         SHAP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
         SHAH A 50
         SHAH AAAAA 3 A_FadeIn(1,0)
         SHAH A 0 A_SetSpeed(5)
         SHAH A 0 A_ChangeFlag("NOTAUTOAIMED", False)
         SHAH A 0 A_Changeflag("Solid",True)
         SHAH A 0 A_UnSetInvulnerable
         Goto See
Post Reply

Return to “Scripting”