Browse Source

station beam polish

Niels Meyering 9 năm trước cách đây
mục cha
commit
7c041b5e29

+ 85 - 0
game/Assets/Materials/EnergyBeam.mat

@@ -0,0 +1,85 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: EnergyBeam
+  m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 2800000, guid: 59665bfd8382fb444853196b4be76b2b, type: 3}
+        m_Scale: {x: 0.2, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _ColorMask: 15
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _InvFade: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _Stencil: 0
+    - _StencilComp: 8
+    - _StencilOp: 0
+    - _StencilReadMask: 255
+    - _StencilWriteMask: 255
+    - _UVSec: 0
+    - _UseUIAlphaClip: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _TintColor: {r: 1, g: 1, b: 1, a: 0.5}

+ 9 - 0
game/Assets/Materials/EnergyBeam.mat.meta

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 5d70785bfe9bc0b4a8f302d845c097db
+timeCreated: 1501422454
+licenseType: Pro
+NativeFormatImporter:
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
game/Assets/Materials/noise.png


+ 82 - 0
game/Assets/Materials/noise.png.meta

@@ -0,0 +1,82 @@
+fileFormatVersion: 2
+guid: 59665bfd8382fb444853196b4be76b2b
+timeCreated: 1501422436
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapU: -1
+    wrapV: 1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 0
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  - buildTarget: Standalone
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 12 - 8
game/Assets/Prefabs/Station.prefab

@@ -364,7 +364,10 @@ MonoBehaviour:
   gauge: {fileID: 4200559040078332}
   powerSuckDelay: 0.5
   powerLevel: 0
+  randomRayOffset: 0
   lineRenderer: {fileID: 120084001983580128}
+  maxBeamWidth: 1
+  beamWidthFadeSeconds: 1
 --- !u!120 &120084001983580128
 LineRenderer:
   m_ObjectHideFlags: 1
@@ -373,12 +376,12 @@ LineRenderer:
   m_GameObject: {fileID: 1087827686162864}
   m_Enabled: 1
   m_CastShadows: 1
-  m_ReceiveShadows: 1
+  m_ReceiveShadows: 0
   m_MotionVectors: 0
   m_LightProbeUsage: 0
   m_ReflectionProbeUsage: 0
   m_Materials:
-  - {fileID: 0}
+  - {fileID: 2100000, guid: 5d70785bfe9bc0b4a8f302d845c097db, type: 2}
   m_StaticBatchInfo:
     firstSubMesh: 0
     subMeshCount: 0
@@ -400,6 +403,7 @@ LineRenderer:
   m_Positions:
   - {x: -5.79, y: 0, z: 4.29}
   - {x: -2.8640223, y: 1, z: 1.1426125}
+  - {x: -2.8640223, y: 1, z: 1.1426125}
   m_Parameters:
     serializedVersion: 2
     widthMultiplier: 1
@@ -409,14 +413,14 @@ LineRenderer:
       - serializedVersion: 2
         time: 0
         value: 0
-        inSlope: 3.7716184
-        outSlope: 3.7716184
+        inSlope: 1.8099006
+        outSlope: 1.8099006
         tangentMode: 0
       - serializedVersion: 2
         time: 1
-        value: 0.9146271
-        inSlope: 0
-        outSlope: 0
+        value: 1
+        inSlope: -0
+        outSlope: -0
         tangentMode: 0
       m_PreInfinity: 2
       m_PostInfinity: 2
@@ -424,7 +428,7 @@ LineRenderer:
     colorGradient:
       serializedVersion: 2
       key0: {r: 1, g: 1, b: 1, a: 1}
-      key1: {r: 1, g: 1, b: 1, a: 1}
+      key1: {r: 0, g: 0.0040060524, b: 0.5808823, a: 1}
       key2: {r: 0, g: 0, b: 0, a: 0}
       key3: {r: 0, g: 0, b: 0, a: 0}
       key4: {r: 0, g: 0, b: 0, a: 0}

+ 32 - 2
game/Assets/Station.cs

@@ -8,21 +8,29 @@ public class Station : MonoBehaviour
     public Transform gauge;
     public float powerSuckDelay = 1;
     public float powerLevel;
+    public float randomRayOffset;
 
     public LineRenderer lineRenderer;
 
     private IEnumerator drainCoroutine;
     private Transform lineTarget;
+    public float maxBeamWidth;
+    public float beamWidthFadeSeconds;
 
     // Use this for initialization
 	void Start ()
 	{
 	    powerLevel = 0;
 	    lineTarget = lineRenderer.transform;
+        var midpoint =
+            (lineRenderer.transform.position +
+            lineTarget.position)/2;
         lineRenderer.SetPositions(new Vector3[]{
             lineRenderer.transform.position,
+            midpoint + Vector3.up,
             lineTarget.position,
         });
+	    lineRenderer.endWidth = 0;
 	}
 	
 	// Update is called once per frame
@@ -44,16 +52,37 @@ public class Station : MonoBehaviour
     {
         var level = powerLevel / maxPower;
         gauge.localScale = new Vector3(1, level, 1);
-        lineRenderer.SetPosition(1, lineTarget.position);
+        var midpoint =
+            (lineRenderer.transform.position +
+            lineTarget.position)/2;
+        lineRenderer.SetPosition(1, midpoint + randomRayOffset * Random.onUnitSphere);
+        lineRenderer.SetPosition(2, lineTarget.position);
+        lineRenderer.material.mainTextureOffset = new Vector2((4 * Time.time) % 1, 0);
     }
 
     void OnTriggerEnter(Collider other)
     {
         if (other.CompareTag("Player"))
         {
+            lineRenderer.enabled = true;
             lineTarget = other.transform;
             drainCoroutine = DrainPower(other.GetComponent<Player>());
             StartCoroutine(drainCoroutine);
+            StartCoroutine(LerpBeamEndWidth(maxBeamWidth, beamWidthFadeSeconds));
+        }
+    }
+
+    private IEnumerator LerpBeamEndWidth(float tarvetValue, float duration)
+    {
+        float startValue = lineRenderer.endWidth;
+        for (float t = 0; t < duration; t += Time.deltaTime)
+        {
+            lineRenderer.endWidth = Mathf.Lerp(startValue, tarvetValue, t / duration);
+            yield return null;
+        }
+        if (Mathf.Approximately(tarvetValue, 0))
+        {
+            lineRenderer.enabled = false;
         }
     }
 
@@ -61,9 +90,10 @@ public class Station : MonoBehaviour
     {
         if (other.CompareTag("Player"))
         {
-            lineTarget = lineRenderer.transform;
+            //lineTarget = lineRenderer.transform;
             if (drainCoroutine != null)
                 StopCoroutine(drainCoroutine);
+            StartCoroutine(LerpBeamEndWidth(0, beamWidthFadeSeconds));
         }
     }