From 640246f598f20059d20ef9ff1e21074d6527a9d3 Mon Sep 17 00:00:00 2001 From: kimura Date: Tue, 20 Jul 2021 16:32:32 +0900 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E3=81=9F=E3=81=AB=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=B3=E9=A3=9B=E3=81=B3=E5=87=BA=E3=81=97=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyGame/Scenes/Cooking/Prefabs/corn.prefab | 22 +++++++++++--- .../MyGame/Scenes/Cooking/Scripts/Corn.cs | 23 +++++++------- .../MyGame/Scenes/Cooking/Scripts/CornSkin.cs | 30 +++++++++++++++++++ .../Scenes/Cooking/Scripts/CornSkin.cs.meta | 3 ++ 4 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs create mode 100644 popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs.meta diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Prefabs/corn.prefab b/popcorn/Assets/MyGame/Scenes/Cooking/Prefabs/corn.prefab index 312fce00..f59b51f8 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Prefabs/corn.prefab +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Prefabs/corn.prefab @@ -67,10 +67,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 175dce409df2f4d3aa1941a08822e03e, type: 3} m_Name: m_EditorClassIdentifier: - spriteRenderer: {fileID: 8958880017665793879} - cornSeedSprite: {fileID: 21300000, guid: 97ac0328246620745b8881e07f709ce7, type: 3} - cornSimpleSprite: {fileID: 21300000, guid: 041ad2539ff56d945ab2da4be6a02f04, type: 3} - cornBurntSprite: {fileID: 21300000, guid: a9d669186411b2b4da1511f59a91b4c9, type: 3} + cornSkin: {fileID: 7130900939474693981} effectBurnt: {fileID: 3984349228049242719, guid: 02298b5aac4434a4c81aec58ad2caa9d, type: 3} animator: {fileID: 5972257590091015193} @@ -121,6 +118,7 @@ GameObject: m_Component: - component: {fileID: 9198528551727453440} - component: {fileID: 8958880017665793879} + - component: {fileID: 7130900939474693981} m_Layer: 0 m_Name: Image_corn m_TagString: Untagged @@ -192,6 +190,22 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!114 &7130900939474693981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3431194784518736845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c466f7c9f9e84d04b4a0afae69c08384, type: 3} + m_Name: + m_EditorClassIdentifier: + spriteRenderer: {fileID: 8958880017665793879} + cornSeedSprite: {fileID: 21300000, guid: 97ac0328246620745b8881e07f709ce7, type: 3} + cornSimpleSprite: {fileID: 21300000, guid: 041ad2539ff56d945ab2da4be6a02f04, type: 3} + cornBurntSprite: {fileID: 21300000, guid: a9d669186411b2b4da1511f59a91b4c9, type: 3} --- !u!1 &4761356856374534614 GameObject: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/Corn.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/Corn.cs index d07adab5..1905f84e 100644 --- a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/Corn.cs +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/Corn.cs @@ -20,11 +20,8 @@ public class Corn : MonoBehaviour private static readonly int HashCornGrow = Animator.StringToHash("CornGrow"); private static readonly int HashCornBurn = Animator.StringToHash("CornBurn"); private static readonly int HashWaitOffset = Animator.StringToHash("WaitOffset"); - - [SerializeField] private SpriteRenderer spriteRenderer; - [SerializeField] private Sprite cornSeedSprite; - [SerializeField] private Sprite cornSimpleSprite; - [SerializeField] private Sprite cornBurntSprite; + + [SerializeField] private CornSkin cornSkin; [SerializeField] private GameObject effectBurnt; [SerializeField] private Animator animator; @@ -48,9 +45,8 @@ public class Corn : MonoBehaviour { condition.AddTo(this); rigidbody = GetComponent(); - spriteRenderer.sprite = cornSeedSprite; - - spriteTransform = spriteRenderer.transform; + + spriteTransform = cornSkin.transform; rotationResolverTransform = spriteTransform.parent.parent; animator.SetFloat(HashWaitOffset, Random.value/2); @@ -60,6 +56,7 @@ public class Corn : MonoBehaviour { rigidbody.MovePosition(new Vector2(Random.value * 2 - 1, Random.value * 2 - 1)); rigidbody.SetRotation(Random.value * 360); + cornSkin.ChangeSkin(condition.Value); // コーンが飛んでいく this.ObserveEveryValueChanged(x => x.rigidbody.velocity.magnitude) @@ -119,7 +116,7 @@ public class Corn : MonoBehaviour private void CornPop() { - spriteRenderer.sprite = cornSimpleSprite; + cornSkin.ChangeSkin(condition.Value); rigidbody.AddForce(cornPopSpeed * new Vector2(Random.value * 2 - 1, Random.value * 2 - 1), ForceMode2D.Impulse); animator.SetTrigger(HashCornGrow); VibrationManager.Instance.PlayVibrationOnce(); @@ -127,7 +124,7 @@ public class Corn : MonoBehaviour private void CornBurnt() { - spriteRenderer.sprite = cornBurntSprite; + cornSkin.ChangeSkin(condition.Value); animator.SetTrigger(HashCornBurn); var effect = Instantiate(effectBurnt, transform); this.CallWaitForSeconds(.8f, () => Destroy(effect)); @@ -135,6 +132,12 @@ public class Corn : MonoBehaviour private void CornSpilled(CornCondition prevCondition) { + var clone = Instantiate(cornSkin); + clone.ChangeSkin(prevCondition); + var cloneRigidBody = clone.gameObject.AddComponent(); + cloneRigidBody.gravityScale = 0; + cloneRigidBody.AddForce(rigidbody.velocity.normalized * cornSpillSpeed, ForceMode2D.Impulse); + this.CallWaitForSeconds(2f, () => Destroy(clone.gameObject)); } public void SetCornProperty(float popTime, float burntDuration, float spillSpeed, float popSpeed) diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs new file mode 100644 index 00000000..af006656 --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +public class CornSkin : MonoBehaviour +{ + [SerializeField] private SpriteRenderer spriteRenderer; + [SerializeField] private Sprite cornSeedSprite; + [SerializeField] private Sprite cornSimpleSprite; + [SerializeField] private Sprite cornBurntSprite; + + public void ChangeSkin(CornCondition condition) + { + switch (condition) + { + case CornCondition.Seed: + spriteRenderer.sprite = cornSeedSprite; + break; + case CornCondition.Simple: + spriteRenderer.sprite = cornSimpleSprite; + break; + case CornCondition.Burnt: + spriteRenderer.sprite = cornBurntSprite; + break; + case CornCondition.Spilled: + break; + default: + throw new ArgumentOutOfRangeException(nameof(condition), condition, null); + } + } +} diff --git a/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs.meta b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs.meta new file mode 100644 index 00000000..3428626e --- /dev/null +++ b/popcorn/Assets/MyGame/Scenes/Cooking/Scripts/CornSkin.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c466f7c9f9e84d04b4a0afae69c08384 +timeCreated: 1626764991 \ No newline at end of file