Material 최적화 및 플레이어 이동 로직 수정 중

+ MaterialPropertyBlock 사용 금지 -> Material Instance 방식으로 변경 (MaterialPropertyBlock은 URP프로젝트 중 SRP Batcher를 사용하는 경우 비추천 방식)
+ 플레이어 이동 방식 velocity 형태로 변경 중
This commit is contained in:
Nam Tae Gun 2024-07-01 04:05:24 +09:00
parent 74c2a14855
commit 54582acbf4
26 changed files with 168 additions and 96 deletions

View File

@ -71,8 +71,15 @@ namespace BlueWater.Enemies.Bosses
base.InitializeComponents(); base.InitializeComponents();
SpriteRenderer = VisualLook.GetComponent<SpriteRenderer>(); SpriteRenderer = VisualLook.GetComponent<SpriteRenderer>();
SpriteRenderer.enabled = false;
Animator = VisualLook.GetComponent<Animator>(); Animator = VisualLook.GetComponent<Animator>();
AnimationController = GetComponent<AnimationController>(); AnimationController = GetComponent<AnimationController>();
MaterialInstance = Instantiate(SpriteRenderer.material);
SpriteRenderer.material = MaterialInstance;
BossHealthPoint.SetMaterialInstance(MaterialInstance);
IsInitialized = true;
} }
#endregion #endregion
@ -84,26 +91,23 @@ namespace BlueWater.Enemies.Bosses
{ {
if (!IsDissolveActive) if (!IsDissolveActive)
{ {
MaterialPropertyBlock.SetFloat(_dissolveValueHash, end); MaterialInstance.SetFloat(_dissolveValueHash, end);
SpriteRenderer.SetPropertyBlock(MaterialPropertyBlock);
yield break; yield break;
} }
MaterialPropertyBlock.SetFloat(_dissolveValueHash, start); MaterialInstance.SetFloat(_dissolveValueHash, start);
SpriteRenderer.SetPropertyBlock(MaterialPropertyBlock); SpriteRenderer.enabled = true;
var elapsedTime = 0f; var elapsedTime = 0f;
while (elapsedTime <= dissolveTime) while (elapsedTime <= dissolveTime)
{ {
var value = Mathf.Lerp(start, end, elapsedTime / dissolveTime); var value = Mathf.Lerp(start, end, elapsedTime / dissolveTime);
MaterialPropertyBlock.SetFloat(_dissolveValueHash, value); MaterialInstance.SetFloat(_dissolveValueHash, value);
SpriteRenderer.SetPropertyBlock(MaterialPropertyBlock);
elapsedTime += Time.deltaTime; elapsedTime += Time.deltaTime;
yield return null; yield return null;
} }
MaterialPropertyBlock.SetFloat(_dissolveValueHash, end); MaterialInstance.SetFloat(_dissolveValueHash, end);
SpriteRenderer.SetPropertyBlock(MaterialPropertyBlock);
} }
private void FlipVisualLook() private void FlipVisualLook()

View File

@ -4,7 +4,6 @@ using BlueWater.Interfaces;
using Pathfinding; using Pathfinding;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using UnityEngine; using UnityEngine;
using UnityEngine.Serialization;
namespace BlueWater.Enemies.Bosses namespace BlueWater.Enemies.Bosses
{ {
@ -38,7 +37,7 @@ namespace BlueWater.Enemies.Bosses
SpikeBarrage SpikeBarrage
} }
public abstract class Boss : MonoBehaviour, ITarget public abstract class Boss : MonoBehaviour, ITarget, IMaterialInstance
{ {
// Variables // Variables
#region Variables #region Variables
@ -77,7 +76,7 @@ namespace BlueWater.Enemies.Bosses
public Collider Target { get; protected set; } public Collider Target { get; protected set; }
public IAstarAI AstarAi; public IAstarAI AstarAi;
protected MaterialPropertyBlock MaterialPropertyBlock; public Material MaterialInstance { get; protected set; }
[Title("디졸브 스폰 효과")] [Title("디졸브 스폰 효과")]
[SerializeField] [SerializeField]
@ -88,6 +87,8 @@ namespace BlueWater.Enemies.Bosses
[SerializeField] [SerializeField]
protected float DieDissolveTime = 1f; protected float DieDissolveTime = 1f;
protected bool IsInitialized;
// Hashes // Hashes
protected static readonly int _dissolveValueHash = Shader.PropertyToID("_DissolveValue"); protected static readonly int _dissolveValueHash = Shader.PropertyToID("_DissolveValue");
@ -153,9 +154,6 @@ namespace BlueWater.Enemies.Bosses
BossSkillController = GetComponent<BossSkillController>(); BossSkillController = GetComponent<BossSkillController>();
AstarAi = GetComponent<IAstarAI>(); AstarAi = GetComponent<IAstarAI>();
MaterialPropertyBlock = new MaterialPropertyBlock();
BossHealthPoint.SetMaterialPropertyBlock(MaterialPropertyBlock);
} }
#endregion #endregion

View File

@ -16,9 +16,6 @@ namespace BlueWater.Enemies.Bosses
[SerializeField] [SerializeField]
private CapsuleCollider _characterCollider; private CapsuleCollider _characterCollider;
[SerializeField]
private Renderer _renderer;
[SerializeField] [SerializeField]
private Transform _particleInstantiateLocation; private Transform _particleInstantiateLocation;
@ -49,6 +46,7 @@ namespace BlueWater.Enemies.Bosses
[SerializeField] [SerializeField]
private ParticleSystem _dieParticle; private ParticleSystem _dieParticle;
private Material _materialInstance;
private FieldBossHealthPointUi _fieldBossHealthPointUi; private FieldBossHealthPointUi _fieldBossHealthPointUi;
private WaitForSeconds _flashWhiteWaitTime; private WaitForSeconds _flashWhiteWaitTime;
private Coroutine _flashWhiteCoroutine; private Coroutine _flashWhiteCoroutine;
@ -56,7 +54,6 @@ namespace BlueWater.Enemies.Bosses
private bool _enableHealthChangedEvent; private bool _enableHealthChangedEvent;
private string _bossName; private string _bossName;
private MaterialPropertyBlock _materialPropertyBlock;
// Hashes // Hashes
private static readonly int _isHitHash = Shader.PropertyToID("_IsHit"); private static readonly int _isHitHash = Shader.PropertyToID("_IsHit");
@ -89,7 +86,6 @@ namespace BlueWater.Enemies.Bosses
private void InitializeComponent() private void InitializeComponent()
{ {
_characterCollider = GetComponent<CapsuleCollider>(); _characterCollider = GetComponent<CapsuleCollider>();
_renderer = GetComponentInChildren<Renderer>();
} }
public void Initialize(bool enableHealthChangedEvent, int maxHealthPoint, string bossName, Transform particleInstantiateLocation = null) public void Initialize(bool enableHealthChangedEvent, int maxHealthPoint, string bossName, Transform particleInstantiateLocation = null)
@ -179,13 +175,11 @@ namespace BlueWater.Enemies.Bosses
private IEnumerator FlashWhiteCoroutine() private IEnumerator FlashWhiteCoroutine()
{ {
_materialPropertyBlock.SetInteger(_isHitHash, 1); _materialInstance.SetInt(_isHitHash, 1);
_renderer.SetPropertyBlock(_materialPropertyBlock);
yield return _flashWhiteWaitTime; yield return _flashWhiteWaitTime;
_materialPropertyBlock.SetInteger(_isHitHash, 0); _materialInstance.SetInt(_isHitHash, 0);
_renderer.SetPropertyBlock(_materialPropertyBlock);
Utils.EndUniqueCoroutine(this, ref _flashWhiteCoroutine); Utils.EndUniqueCoroutine(this, ref _flashWhiteCoroutine);
} }
@ -196,6 +190,6 @@ namespace BlueWater.Enemies.Bosses
Utils.EndUniqueCoroutine(this, ref _damageIntervalCoroutine); Utils.EndUniqueCoroutine(this, ref _damageIntervalCoroutine);
} }
public void SetMaterialPropertyBlock(MaterialPropertyBlock materialPropertyBlock) => _materialPropertyBlock = materialPropertyBlock; public void SetMaterialInstance(Material materialInstance) => _materialInstance = materialInstance;
} }
} }

View File

@ -51,6 +51,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros
SetMoveSpeed(RhinocerosData.MoveSpeed); SetMoveSpeed(RhinocerosData.MoveSpeed);
StopMove(); StopMove();
yield return IsInitialized;
yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime));
BehaviorTree.EnableBehavior(); BehaviorTree.EnableBehavior();

View File

@ -1,6 +1,5 @@
using System.Collections; using System.Collections;
using BlueWater.Audios; using BlueWater.Audios;
using Sirenix.OdinInspector;
using UnityEngine; using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole namespace BlueWater.Enemies.Bosses.SandMole
@ -24,6 +23,7 @@ namespace BlueWater.Enemies.Bosses.SandMole
SetMoveSpeed(SandMoleData.MoveSpeed); SetMoveSpeed(SandMoleData.MoveSpeed);
StopMove(); StopMove();
yield return IsInitialized;
yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime));
SpineController.SetSkin(SandMoleSkin.Normal.ToString()); SpineController.SetSkin(SandMoleSkin.Normal.ToString());

View File

@ -108,7 +108,8 @@ namespace BlueWater.Enemies.Bosses.SandMole
BossSkillController.Initialize(BossData.SkillDataList); BossSkillController.Initialize(BossData.SkillDataList);
SetMoveSpeed(SandMoleData.MoveSpeed); SetMoveSpeed(SandMoleData.MoveSpeed);
StopMove(); StopMove();
yield return IsInitialized;
yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime));
SpineController.SetSkin(SandMoleSkin.Normal.ToString()); SpineController.SetSkin(SandMoleSkin.Normal.ToString());

View File

@ -2,6 +2,7 @@
using BlueWater.Interfaces; using BlueWater.Interfaces;
using BlueWater.Players; using BlueWater.Players;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using Spine.Unity;
using UnityEngine; using UnityEngine;
namespace BlueWater.Enemies.Bosses namespace BlueWater.Enemies.Bosses
@ -39,6 +40,19 @@ namespace BlueWater.Enemies.Bosses
// Unity events // Unity events
#region Unity events #region Unity events
protected override void Start()
{
base.Start();
var originalMaterial = SpineController.SkeletonAnimation.SkeletonDataAsset.atlasAssets[0].PrimaryMaterial;
var newMaterial = SpineController.SkeletonAnimation.CustomMaterialOverride[originalMaterial];
MaterialInstance = Instantiate(newMaterial);
SpineController.SkeletonAnimation.CustomMaterialOverride[originalMaterial] = MaterialInstance;
BossHealthPoint.SetMaterialInstance(MaterialInstance);
IsInitialized = true;
}
protected override void Update() protected override void Update()
{ {
base.Update(); base.Update();
@ -58,7 +72,15 @@ namespace BlueWater.Enemies.Bosses
base.InitializeComponents(); base.InitializeComponents();
MeshRenderer = VisualLook.GetComponent<MeshRenderer>(); MeshRenderer = VisualLook.GetComponent<MeshRenderer>();
MeshRenderer.enabled = false;
SpineController = GetComponent<SpineController>(); SpineController = GetComponent<SpineController>();
// var originalMaterial = VisualLook.GetComponent<SkeletonAnimation>().SkeletonDataAsset.atlasAssets[0].PrimaryMaterial;
// MaterialInstance = Instantiate(MeshRenderer.material);
// SpineController.SkeletonAnimation.CustomMaterialOverride[originalMaterial] = MaterialInstance;
// print($"originalMaterial : {originalMaterial.name}, custom : {SpineController.SkeletonAnimation.CustomMaterialOverride[originalMaterial]}");
//
// BossHealthPoint.SetMaterialInstance(MaterialInstance);
} }
#endregion #endregion
@ -70,26 +92,23 @@ namespace BlueWater.Enemies.Bosses
{ {
if (!IsDissolveActive) if (!IsDissolveActive)
{ {
MaterialPropertyBlock.SetFloat(_dissolveValueHash, end); MaterialInstance.SetFloat(_dissolveValueHash, end);
MeshRenderer.SetPropertyBlock(MaterialPropertyBlock);
yield break; yield break;
} }
MaterialPropertyBlock.SetFloat(_dissolveValueHash, start); MaterialInstance.SetFloat(_dissolveValueHash, start);
MeshRenderer.SetPropertyBlock(MaterialPropertyBlock); MeshRenderer.enabled = true;
var elapsedTime = 0f; var elapsedTime = 0f;
while (elapsedTime <= dissolveTime) while (elapsedTime <= dissolveTime)
{ {
var value = Mathf.Lerp(start, end, elapsedTime / dissolveTime); var value = Mathf.Lerp(start, end, elapsedTime / dissolveTime);
MaterialPropertyBlock.SetFloat(_dissolveValueHash, value); MaterialInstance.SetFloat(_dissolveValueHash, value);
MeshRenderer.SetPropertyBlock(MaterialPropertyBlock);
elapsedTime += Time.deltaTime; elapsedTime += Time.deltaTime;
yield return null; yield return null;
} }
MaterialPropertyBlock.SetFloat(_dissolveValueHash, end); MaterialInstance.SetFloat(_dissolveValueHash, end);
MeshRenderer.SetPropertyBlock(MaterialPropertyBlock);
} }
protected virtual void FlipVisualLook() protected virtual void FlipVisualLook()

View File

@ -60,8 +60,13 @@ namespace BlueWater.Enemies.Bosses.TitanSlime
if (TitanSlimeState.HasRabbit && titanSlimeState.Level == 1) if (TitanSlimeState.HasRabbit && titanSlimeState.Level == 1)
{ {
yield return IsInitialized;
yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime));
} }
else
{
SpriteRenderer.enabled = true;
}
_rabbit.enabled = TitanSlimeState.HasRabbit; _rabbit.enabled = TitanSlimeState.HasRabbit;
BehaviorTree.EnableBehavior(); BehaviorTree.EnableBehavior();

View File

@ -179,7 +179,6 @@ namespace BlueWater.Players.Combat
} }
_animationController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed); _animationController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed);
AudioManager.Instance.PlaySfx("FirstComboAttack");
IsComboAttackPossible = true; IsComboAttackPossible = true;
var doDamage = false; var doDamage = false;
@ -188,9 +187,11 @@ namespace BlueWater.Players.Combat
{ {
if (!doDamage && _animationController.GetCurrentAnimationNormalizedTime() >= 0.28f) if (!doDamage && _animationController.GetCurrentAnimationNormalizedTime() >= 0.28f)
{ {
AudioManager.Instance.PlaySfx("FirstComboAttack");
var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower; var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower;
var finalVelocity = _iPhysicMovable.CurrentDirection * moveSpeed; var finalVelocity = _iPhysicMovable.CurrentDirection * moveSpeed;
_rigidbody.MovePosition(transform.position + finalVelocity * moveSpeed * Time.deltaTime); //_rigidbody.MovePosition(transform.position + finalVelocity * moveSpeed * Time.deltaTime);
_rigidbody.linearVelocity = finalVelocity;
doDamage = true; doDamage = true;
DoDamage(CurrentComboAttackCount, _iPhysicMovable.CurrentDirection); DoDamage(CurrentComboAttackCount, _iPhysicMovable.CurrentDirection);
} }
@ -224,7 +225,6 @@ namespace BlueWater.Players.Combat
} }
_animationController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed); _animationController.SetCurrentAnimationSpeed(ComboAttacks[CurrentComboAttackCount - 1].Speed);
AudioManager.Instance.PlaySfx("SecondComboAttack");
var doDamage = false; var doDamage = false;
while (_animationController.IsComparingCurrentAnimation("ComboAttack2") && while (_animationController.IsComparingCurrentAnimation("ComboAttack2") &&
@ -232,9 +232,11 @@ namespace BlueWater.Players.Combat
{ {
if (!doDamage && _animationController.GetCurrentAnimationNormalizedTime() >= 0.3f) if (!doDamage && _animationController.GetCurrentAnimationNormalizedTime() >= 0.3f)
{ {
AudioManager.Instance.PlaySfx("SecondComboAttack");
var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower; var moveSpeed = ComboAttacks[CurrentComboAttackCount - 1].MovePower;
var finalVelocity = _iPhysicMovable.CurrentDirection * moveSpeed; var finalVelocity = _iPhysicMovable.CurrentDirection * moveSpeed;
_rigidbody.MovePosition(transform.position + finalVelocity * moveSpeed * Time.deltaTime); //_rigidbody.MovePosition(transform.position + finalVelocity * moveSpeed * Time.deltaTime);
_rigidbody.linearVelocity = finalVelocity;
doDamage = true; doDamage = true;
DoDamage(CurrentComboAttackCount, _iPhysicMovable.CurrentDirection); DoDamage(CurrentComboAttackCount, _iPhysicMovable.CurrentDirection);
} }

View File

@ -38,7 +38,7 @@ namespace BlueWater.Players.Combat
[field: SerializeField, Range(1f, 10f), Tooltip("이동 속도")] [field: SerializeField, Range(1f, 10f), Tooltip("이동 속도")]
public float MoveSpeed { get; private set; } = 7f; public float MoveSpeed { get; private set; } = 7f;
public float MoveSpeedCoefficient { get; private set; }= 1f; public float MoveSpeedCoefficient { get; private set; } = 1f;
public bool IsMoveEnabled { get; private set; } = true; public bool IsMoveEnabled { get; private set; } = true;
@ -81,8 +81,11 @@ namespace BlueWater.Players.Combat
_animationController.SetAnimationParameter("zDirection", _currentDirection.z); _animationController.SetAnimationParameter("zDirection", _currentDirection.z);
} }
} }
private float _finalSpeed; public Vector3 PushDirection { get; private set; }
public float PushPower { get; private set; }
public float PushReductionCoefficient { get; private set; }
private Vector3 _finalVelocity;
// Dash // Dash
[field: Title("대쉬")] [field: Title("대쉬")]
@ -136,9 +139,28 @@ namespace BlueWater.Players.Combat
private void FixedUpdate() private void FixedUpdate()
{ {
if (!CanMove()) return; if (!IsMoveEnabled) return;
Move(); if (!_isDashing && _comboAttackable?.CurrentComboAttackCount <= 0 && _skillHandler?.IsActivatingSkill == false)
{
var velocityDirection = _inputDirection;
if (_stunnable?.IsStunned == true)
{
velocityDirection = Vector3.zero;
}
else
{
CurrentDirection = velocityDirection;
}
IsMoving = velocityDirection != Vector3.zero;
_finalVelocity = velocityDirection * (MoveSpeed * MoveSpeedCoefficient);
var pushVelocity = PushDirection * PushPower;
_finalVelocity += pushVelocity;
Rigidbody.linearVelocity = _finalVelocity;
}
PushPower = Mathf.Max(0, PushPower - PushReductionCoefficient * Time.deltaTime);
} }
private void OnApplicationQuit() private void OnApplicationQuit()
@ -284,7 +306,11 @@ namespace BlueWater.Players.Combat
_dashParticle.Play(); _dashParticle.Play();
} }
var dashDirection = CurrentDirection; var dashDirection = _inputDirection;
if (dashDirection == Vector3.zero)
{
dashDirection = CurrentDirection;
}
var animationStarted = false; var animationStarted = false;
yield return StartCoroutine(_animationController.WaitForAnimationToRun("DashState", yield return StartCoroutine(_animationController.WaitForAnimationToRun("DashState",
success => animationStarted = success)); success => animationStarted = success));

View File

@ -12,8 +12,8 @@ namespace BlueWater.Players
// Variables // Variables
#region Variables #region Variables
// Components // Components
[SerializeField] [field: SerializeField]
private SkeletonAnimation _skeletonAnimation; public SkeletonAnimation SkeletonAnimation { get; private set; }
private AnimationState _animationState; private AnimationState _animationState;
@ -39,8 +39,9 @@ namespace BlueWater.Players
[Button("셋팅 초기화")] [Button("셋팅 초기화")]
public virtual void InitializeComponents() public virtual void InitializeComponents()
{ {
_skeletonAnimation = transform.GetComponentInChildren<SkeletonAnimation>(); SkeletonAnimation = transform.GetComponentInChildren<SkeletonAnimation>();
_animationState = _skeletonAnimation.AnimationState; _animationState = SkeletonAnimation.AnimationState;
SetSkin(_initialSkinName); SetSkin(_initialSkinName);
} }
@ -56,7 +57,7 @@ namespace BlueWater.Players
/// <returns></returns> /// <returns></returns>
public TrackEntry PlayAnimation(string animationName, bool isLoopActive, float speed = 1f, bool isReverse = false) public TrackEntry PlayAnimation(string animationName, bool isLoopActive, float speed = 1f, bool isReverse = false)
{ {
if (!_skeletonAnimation || _animationState == null) return null; if (!SkeletonAnimation || _animationState == null) return null;
if (string.IsNullOrEmpty(animationName)) if (string.IsNullOrEmpty(animationName))
{ {
@ -77,7 +78,7 @@ namespace BlueWater.Players
public void SetSkin(string skinName) public void SetSkin(string skinName)
{ {
if (_skeletonAnimation == null && _animationState == null) return; if (SkeletonAnimation == null && _animationState == null) return;
if (string.IsNullOrEmpty(skinName)) if (string.IsNullOrEmpty(skinName))
{ {
@ -85,9 +86,9 @@ namespace BlueWater.Players
return; return;
} }
_skeletonAnimation.Skeleton.SetSkin(skinName); SkeletonAnimation.Skeleton.SetSkin(skinName);
_skeletonAnimation.Skeleton.SetSlotsToSetupPose(); SkeletonAnimation.Skeleton.SetSlotsToSetupPose();
_animationState.Apply(_skeletonAnimation.Skeleton); _animationState.Apply(SkeletonAnimation.Skeleton);
} }
public async Awaitable WaitForAnimationCompletion(TrackEntry trackEntry, bool isReverse = false) public async Awaitable WaitForAnimationCompletion(TrackEntry trackEntry, bool isReverse = false)

View File

@ -0,0 +1,9 @@
using UnityEngine;
namespace BlueWater.Interfaces
{
public interface IMaterialInstance
{
Material MaterialInstance { get; }
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: fb02fa7cce84ebf43b17c7f1700f1180
timeCreated: 1716899052

View File

@ -1,3 +1,4 @@
using BlueWater.Interfaces;
using UnityEngine; using UnityEngine;
namespace BlueWater namespace BlueWater
@ -11,7 +12,8 @@ namespace BlueWater
private float _size = 0.5f; private float _size = 0.5f;
private Camera _mainCamera; private Camera _mainCamera;
private Renderer _previousRenderer; private Material _hitMaterialInstance;
private Material _previousMaterialInstance;
// Hashes // Hashes
private static readonly int _sizeHash = Shader.PropertyToID("_Size"); private static readonly int _sizeHash = Shader.PropertyToID("_Size");
@ -30,28 +32,28 @@ namespace BlueWater
if (Physics.Raycast(ray, out var hit, 100f, _maskLayer)) if (Physics.Raycast(ray, out var hit, 100f, _maskLayer))
{ {
var hitRenderer = hit.collider.GetComponentInChildren<Renderer>(); _hitMaterialInstance = hit.collider.GetComponent<IMaterialInstance>()?.MaterialInstance;
if (!hitRenderer) return; if (!_hitMaterialInstance) return;
if (!hitRenderer.material.HasProperty(_sizeHash)) return; if (!_hitMaterialInstance.HasProperty(_sizeHash)) return;
if (_previousRenderer && _previousRenderer != hitRenderer && _previousRenderer.material.HasProperty(_sizeHash)) if (_previousMaterialInstance && _previousMaterialInstance != _hitMaterialInstance && _previousMaterialInstance.HasProperty(_sizeHash))
{ {
_previousRenderer.material.SetFloat(_sizeHash, 0f); _previousMaterialInstance.SetFloat(_sizeHash, 0f);
} }
hitRenderer.material.SetFloat(_sizeHash, _size); _hitMaterialInstance.SetFloat(_sizeHash, _size);
_previousRenderer = hitRenderer; _previousMaterialInstance = _hitMaterialInstance;
} }
else else
{ {
if (!_previousRenderer) return; if (!_previousMaterialInstance) return;
if (_previousRenderer.material.HasProperty(_sizeHash)) if (_previousMaterialInstance.HasProperty(_sizeHash))
{ {
_previousRenderer.material.SetFloat(_sizeHash, 0f); _previousMaterialInstance.SetFloat(_sizeHash, 0f);
} }
_previousRenderer = null; _previousMaterialInstance = null;
} }
} }
} }

View File

@ -95,7 +95,7 @@ Material:
- _Cutoff: 0.5 - _Cutoff: 0.5
- _DetailAlbedoMapScale: 1 - _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1 - _DetailNormalMapScale: 1
- _DissolveValue: 0 - _DissolveValue: 1
- _DstBlend: 0 - _DstBlend: 0
- _DstBlendAlpha: 0 - _DstBlendAlpha: 0
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1

View File

@ -95,7 +95,7 @@ Material:
- _Cutoff: 0.5 - _Cutoff: 0.5
- _DetailAlbedoMapScale: 1 - _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1 - _DetailNormalMapScale: 1
- _DissolveValue: 0 - _DissolveValue: 1
- _DstBlend: 0 - _DstBlend: 0
- _DstBlendAlpha: 0 - _DstBlendAlpha: 0
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1

View File

@ -95,7 +95,7 @@ Material:
- _Cutoff: 0.5 - _Cutoff: 0.5
- _DetailAlbedoMapScale: 1 - _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1 - _DetailNormalMapScale: 1
- _DissolveValue: 0 - _DissolveValue: 1
- _DstBlend: 0 - _DstBlend: 0
- _DstBlendAlpha: 0 - _DstBlendAlpha: 0
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1

View File

@ -95,7 +95,7 @@ Material:
- _Cutoff: 0.5 - _Cutoff: 0.5
- _DetailAlbedoMapScale: 1 - _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1 - _DetailNormalMapScale: 1
- _DissolveValue: 0 - _DissolveValue: 1
- _DstBlend: 0 - _DstBlend: 0
- _DstBlendAlpha: 0 - _DstBlendAlpha: 0
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1

View File

@ -109,7 +109,7 @@ Material:
- _OcclusionStrength: 1 - _OcclusionStrength: 1
- _Opacity: 0.7 - _Opacity: 0.7
- _Parallax: 0.005 - _Parallax: 0.005
- _QueueControl: 1 - _QueueControl: 0
- _QueueOffset: 0 - _QueueOffset: 0
- _ReceiveShadows: 1 - _ReceiveShadows: 1
- _Size: 0 - _Size: 0

View File

@ -95,7 +95,7 @@ Material:
- _Cutoff: 0.5 - _Cutoff: 0.5
- _DetailAlbedoMapScale: 1 - _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1 - _DetailNormalMapScale: 1
- _DissolveValue: 0 - _DissolveValue: 1
- _DstBlend: 0 - _DstBlend: 0
- _DstBlendAlpha: 0 - _DstBlendAlpha: 0
- _EnvironmentReflections: 1 - _EnvironmentReflections: 1

View File

@ -555,7 +555,7 @@ MonoBehaviour:
<Range>k__BackingField: 1.5 <Range>k__BackingField: 1.5
<Angle>k__BackingField: 180 <Angle>k__BackingField: 180
<Speed>k__BackingField: 0.3 <Speed>k__BackingField: 0.3
<MovePower>k__BackingField: 2 <MovePower>k__BackingField: 1
<TargetLayer>k__BackingField: <TargetLayer>k__BackingField:
serializedVersion: 2 serializedVersion: 2
m_Bits: 69632 m_Bits: 69632

View File

@ -3651,6 +3651,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: SandMoleMapController value: SandMoleMapController
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8874040642671342955, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
propertyPath: m_LocalPosition.z
value: 7
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: m_AddedGameObjects:

View File

@ -16,7 +16,7 @@ Material:
- _STRAIGHT_ALPHA_INPUT - _STRAIGHT_ALPHA_INPUT
m_InvalidKeywords: [] m_InvalidKeywords: []
m_LightmapFlags: 4 m_LightmapFlags: 4
m_EnableInstancingVariants: 0 m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0 m_DoubleSidedGI: 0
m_CustomRenderQueue: -1 m_CustomRenderQueue: -1
stringTagMap: {} stringTagMap: {}

View File

@ -36,24 +36,24 @@ MonoBehaviour:
- rid: 5032277253446697243 - rid: 5032277253446697243
- rid: 5032277253446697244 - rid: 5032277253446697244
- rid: 5032277253446697245 - rid: 5032277253446697245
- rid: 7789284894475288580 - rid: 7789285205019197450
- rid: 5032277253446697247 - rid: 5032277253446697247
- rid: 5032277253446697248 - rid: 5032277253446697248
- rid: 7789284894475288581 - rid: 7789285205019197451
- rid: 7789284894475288582 - rid: 7789285205019197452
- rid: 5032277253446697251 - rid: 5032277253446697251
- rid: 7789284894475288583 - rid: 7789285205019197453
- rid: 5032277253446697253 - rid: 5032277253446697253
- rid: 7789284894475288584 - rid: 7789285205019197454
- rid: 5032277253446697255 - rid: 5032277253446697255
- rid: 7789284894475288585 - rid: 7789285205019197455
- rid: 7789284894475288586 - rid: 7789285205019197456
- rid: 5032277253446697258 - rid: 5032277253446697258
- rid: 5032277253446697259 - rid: 5032277253446697259
- rid: 7789284894475288587 - rid: 7789285205019197457
- rid: 7789284894475288588 - rid: 7789285205019197458
- rid: 5032277253446697262 - rid: 5032277253446697262
- rid: 7789284894475288589 - rid: 7789285205019197459
m_RuntimeSettings: m_RuntimeSettings:
m_List: m_List:
- rid: 5032277253446697243 - rid: 5032277253446697243
@ -159,7 +159,7 @@ MonoBehaviour:
m_version: 0 m_version: 0
m_EnableCompilationCaching: 1 m_EnableCompilationCaching: 1
m_EnableValidityChecks: 1 m_EnableValidityChecks: 1
- rid: 7789284894475288580 - rid: 7789285205019197450
type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:
m_Version: 0 m_Version: 0
@ -174,14 +174,14 @@ MonoBehaviour:
m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2} m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}
- rid: 7789284894475288581 - rid: 7789285205019197451
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:
m_Version: 0 m_Version: 0
m_StripUnusedPostProcessingVariants: 0 m_StripUnusedPostProcessingVariants: 0
m_StripUnusedVariants: 1 m_StripUnusedVariants: 1
m_StripScreenCoordOverrideVariants: 1 m_StripScreenCoordOverrideVariants: 1
- rid: 7789284894475288582 - rid: 7789285205019197452
type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:
m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
@ -189,7 +189,7 @@ MonoBehaviour:
m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2} m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2} m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2} m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2}
- rid: 7789284894475288583 - rid: 7789285205019197453
type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:
m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3}
@ -201,7 +201,7 @@ MonoBehaviour:
m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3} m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3}
m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3}
m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3} m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3}
- rid: 7789284894475288584 - rid: 7789285205019197454
type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime}
data: data:
m_Version: 0 m_Version: 0
@ -214,7 +214,7 @@ MonoBehaviour:
m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3} m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3}
m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3} m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3}
m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3} m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3}
- rid: 7789284894475288585 - rid: 7789285205019197455
type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
data: data:
m_Version: 1 m_Version: 1
@ -224,7 +224,7 @@ MonoBehaviour:
probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3} probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3}
probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3} probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3}
numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3} numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3}
- rid: 7789284894475288586 - rid: 7789285205019197456
type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
data: data:
m_Version: 1 m_Version: 1
@ -237,19 +237,19 @@ MonoBehaviour:
skyOcclusionRT: {fileID: 4807578003741378534, guid: dfaf42b38dd001f49a72d8102b709f29, type: 3} skyOcclusionRT: {fileID: 4807578003741378534, guid: dfaf42b38dd001f49a72d8102b709f29, type: 3}
renderingLayerCS: {fileID: 7200000, guid: a63c9cf933e3d8f41ae680a372784ebf, type: 3} renderingLayerCS: {fileID: 7200000, guid: a63c9cf933e3d8f41ae680a372784ebf, type: 3}
renderingLayerRT: {fileID: 4807578003741378534, guid: c2be09c936362eb49a58f08aeb30627a, type: 3} renderingLayerRT: {fileID: 4807578003741378534, guid: c2be09c936362eb49a58f08aeb30627a, type: 3}
- rid: 7789284894475288587 - rid: 7789285205019197457
type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
data: data:
m_Version: 1 m_Version: 1
m_ProbeVolumeDisableStreamingAssets: 0 m_ProbeVolumeDisableStreamingAssets: 0
- rid: 7789284894475288588 - rid: 7789285205019197458
type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
data: data:
m_Version: 1 m_Version: 1
probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3} probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3}
probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3} probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3}
probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3} probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3}
- rid: 7789284894475288589 - rid: 7789285205019197459
type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
data: data:
m_version: 0 m_version: 0

View File

@ -13,7 +13,7 @@ PlayerSettings:
useOnDemandResources: 0 useOnDemandResources: 0
accelerometerFrequency: 60 accelerometerFrequency: 60
companyName: CapersUnity companyName: CapersUnity
productName: NewBlueWater productName: ActionHustle
defaultCursor: {fileID: 0} defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0} cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}

View File

@ -4,7 +4,7 @@
QualitySettings: QualitySettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 5 serializedVersion: 5
m_CurrentQuality: 5 m_CurrentQuality: 0
m_QualitySettings: m_QualitySettings:
- serializedVersion: 4 - serializedVersion: 4
name: Very Low name: Very Low
@ -319,4 +319,7 @@ QualitySettings:
terrainMaxTrees: 50 terrainMaxTrees: 50
excludedTargetPlatforms: [] excludedTargetPlatforms: []
m_TextureMipmapLimitGroupNames: [] m_TextureMipmapLimitGroupNames: []
m_PerPlatformDefaultQuality: {} m_PerPlatformDefaultQuality:
Android: 0
Standalone: 0
Windows Store Apps: 0