ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2020ǯ05·î22Æü(¶â) 15:18:08ÍúÎò
³Ø½¬¤¹¤ë¤³¤È
<Ìá¤êÃÍ>¤Î»È¤¤Êý
<´Ø¿ô¤Î°ú¿ô>¤Î»È¤¤Êý¡¡¡Ê£¿ô¤Î°ú¿ô¡¡¢¼«ºî¥¯¥é¥¹¤Î°ú¿ô
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤Î<Add Component>¤Î»È¤¤Êý
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Îºï½ü¤Î¤ä¤êÊý
¡¡¸½ºß¤Ï¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤Î¥¢¥¤¥Æ¥à¤ËÀÜ¿¨¤¹¤ë¤ÈPlayer¤Î°Üư®ÅÙ¤¬ÊѲ½¤·¤Þ¤¹¡£
¤¿¤À¤·¡¢»þ´ÖÀÚ¤ì¤Ê¤É¤ÎÀ©¸Â¤¬¤Ê¤¤¤¿¤á¡¢°ìÅÙ¼è¤ë¤È¤º¤Ã¤È°Üư®ÅÙ¤¬ÊѲ½¤·¤¿¤Þ¤Þ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¡¡¤³¤Á¤é¤ò½¤Àµ¤·¡¢»þ´ÖÀ©¸ÂÉÕ¤¤Ç¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡¿§¡¹¤ÊÊýË¡¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤¢¤Þ¤ê¥µ¥¤¥È¤Îµ»ö¤Ë¤Ê¤¤ÊýË¡¤Ç¼ÂÁõ¤ò¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£
¡¡¥¤¥á¡¼¥¸¤È¤·¤Æ¤Ï
£±¡¥¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤Î¥¢¥¤¥Æ¥à¤ËÀÜ¿¨¤¹¤ë
£²¡¥Player¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡Ö¥¹¥Ô¡¼¥É¥¢¥Ã¥×¡×¤È¤¤¤¦¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¡¢
¡¡¡¡°Üư®ÅÙ¤òÊѲ½¤µ¤»¤ë¤È¤È¤â¤Ë¡¢¥¹¥Ô¡¼¥É¥¢¥Ã¥×¾õÂÖ¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é»ëǧ¤Ç¤¤ë·Á¤ÇÉÕÍ¿¤¹¤ë¡£
£³¡¥°ìÄê»þ´Ö¸å¤Ë¡Ö¥¹¥Ô¡¼¥É¥¢¥Ã¥×¡×¤Î¥¯¥é¥¹¤òÇË´þ¤¹¤ë¤ÈƱ»þ¤Ë¡¢°Üư®ÅÙ¤ò¸µ¤ËÌ᤹¡£
¡¡Player¤Î°Üư®ÅÙ¤òÊѲ½¤µ¤»¤ë¡Ê¾å¤²¤ë¡¢²¼¤²¤ë¡¢Ì᤹¡Ë¤È¤¤¤Ã¤¿½èÍý¤Ï¤¹¤Ù¤Æ
Player¥¯¥é¥¹¤ÎChangeMoveSpeed´Ø¿ô¤Ë¤Æ¹Ô¤¦¤è¤¦¤Ë¤·¤Þ¤¹¡£
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private float moveSpeed; // Start is called before the first frame update void Start() { moveSpeed = 0.05f; } // Update is called once per frame void Update() { // º¸Ìð°õ¤¬²¡¤µ¤ì¤¿»þ if(Input.GetKey(KeyCode.LeftArrow)) { // º¸¤Ë¡Ö3¡×ư¤«¤¹ transform.Translate(-moveSpeed, 0, 0); } // ±¦Ìð°õ¤¬²¡¤µ¤ì¤¿»þ if(Input.GetKey(KeyCode.RightArrow)) { // ±¦¤Ë¡Ö£³¡×ư¤«¤¹ transform.Translate(moveSpeed, 0, 0); } } /// <summary> /// °Üư®ÅÙ¤òÊѹ¹¤¹¤ë /// ItemSpeed¥¯¥é¥¹¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë /// </summary> public void ChangeMoveSpeed(float newMoveSpeed) { moveSpeed = newMoveSpeed; Debug.Log(moveSpeed); } /* ¤³¤³¤«¤éÄɲà */ /// <summary> /// ËÜÍè¤Î°Üư®ÅÙ¤ÎÌá¤êÃͤò»È¤Ã¤ÆÊÖ¤·¤ÆÅϤ¹ /// </summary> public float GetMoveSpeed() { return moveSpeed; } /* ¤³¤³¤Þ¤Ç */ }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Condition_ChangeSpeed : MonoBehaviour { [Header("¤³¤Î¥¯¥é¥¹¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤¿»þ¤ÎPlayer¤Î°Üư®ÅÙ")] public float changedSpeed; [Header("¤³¤Î¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¤ª¤¯»þ´Ö = ¸ú²Ì»þ´Ö")] public float conditionTime; private PlayerController playerController; private float normalMoveSpeed; // ËÜÍè¤Î°Üư®ÅÙ private float timer; // ¸ú²Ì»þ´Ö·×¬ÍÑ /// <summary> /// SpeedItem¥¯¥é¥¹¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë /// </summary> public void Setup(float speed, float time) { // ¼õ¤±¼è¤Ã¤¿°ú¿ô¤òÍѰդ·¤¿ÊÑ¿ô¤ØÂåÆþ¤¹¤ë¡Ê°ú¿ô¤ÎÊÑ¿ô¤Î¥¹¥³¡¼¥×ÈϰϤϡ¢¤½¤Î´Ø¿ôÆâ¤Ç¤·¤«»È¤¨¤Ê¤¤¡Ë changedSpeed = speed; conditionTime = time; // ¤³¤Î¥¯¥é¥¹¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËPlayerController¥¯¥é¥¹¤¬¤¢¤ë¤«³Îǧ¤·¤Æ¼èÆÀ¤¹¤ë if (TryGetComponent(out playerController)) { // ¼èÆÀ¤Ç¤¤¿¤Ê¤é¡¢¸µ¤ËÌ᤹ºÝ¤Î°Üư®ÅÙ¤òµÏ¿¤·¤Æ¤ª¤¯ // º¸ÊÕ = ±¦ÊÕ ¤Î½èÍý¤Ë¤è¤ê¡¢Ìá¤êÃͤò»ý¤ÄGetMoveSpeed´Ø¿ô¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢Ãͤ¬ÂåÆþ¤µ¤ì¤ë normalMoveSpeed = playerController.GetMoveSpeed(); // °Üư®ÅÙ¤òÊѹ¹¤¹¤ë playerController.ChangeMoveSpeed(changedSpeed); } else { // ¼èÆÀ¤Ç¤¤Ê¤«¤Ã¤¿¤é¡¢¤³¤Î¥¯¥é¥¹¤òÇË´þ¤¹¤ë Destroy(GetComponent<Condition_ChangeSpeed>()); } } void Update() { // PlayerController¥¯¥é¥¹¤¬ÂåÆþ¤µ¤ì¤ë¤Þ¤Ç¤Ï¡¢Update½èÍý¤ò¤·¤Ê¤¤ if (playerController == null) { return; } // ¥¿¥¤¥Þ¡¼¤ò¼Â¹Ô timer += Time.deltaTime; // ¥¿¥¤¥Þ¡¼¤ÎÃͤ¬¸ú²Ì»þ´Ö¤òͤ¨¤¿¤é if (timer > conditionTime) { // °Üư®ÅÙ¤ò¸µ¤ÎÃͤËÌ᤹ playerController.ChangeMoveSpeed(normalMoveSpeed); // ¤³¤Î¥¯¥é¥¹¤òÇ˲õ¤¹¤ë Destroy(this); } } }
using UnityEngine; /// <summary> /// Player¤Î°Üư®ÅÙ¤òÊѹ¹¤¹¤ë¥¯¥é¥¹ /// ¥¢¥¤¥Æ¥à¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ»ÈÍѤ¹¤ë /// </summary> public class SpeedItem : MonoBehaviour { [Header("Player¤Î°Üư®ÅÙ¤ÎÊѹ¹ÃÍ")] public float speed; [Header("Player¤Î°Üư®ÅÙ¤ÎÊѹ¹ÃÍ")] // Äɲà public float conditionTime; // Äɲà void Update() { if (transform.position.y < -5.0f) { // ²èÌ̳°¤Ë¥¢¥¤¥Æ¥à¤¬½Ð¤¿¤éÇ˲õ¤¹¤ë Destroy(gameObject); } } private void OnTriggerEnter2D(Collider2D col) { // ÀÜ¿¨¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¿¥°¤¬¡ÉPlayer¡É¤«³Îǧ¤¹¤ë if (col.gameObject.tag == "Player") { /* ¤¤¤Þ¤Þ¤Ç¤Î½èÍý¤ò¥³¥á¥ó¥È¥¢¥¦¥È*/ // ¡ÉPlayer¡É¤Ç¤¢¤Ã¤¿¤Ê¤é¡¢¤½¤ÎPlayer¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬½ê»ý¤·¤Æ¤¤¤ëPlayerController¥¯¥é¥¹¤ò¼èÆÀ¤ò»î¤ß¤ë //if (col.gameObject.TryGetComponent(out PlayerController playerController)) { // // PlayerController¥¯¥é¥¹¤ò¼èÆÀ¤Ç¤¤¿¤Ê¤é¡¢PlayerController¥¯¥é¥¹¤ÎChangeMoveSpeed´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¡¢°ú¿ô¤È¤·¤ÆspeedÊÑ¿ô¤òÅϤ¹ // playerController.ChangeMoveSpeed(speed); //} //Debug.Log(playerController); /* ¤³¤³¤Þ¤Ç¥³¥á¥ó¥È¥¢¥¦¥È °Ê²¼¤òÄɲÃ*/ // ¤¹¤Ç¤Ë¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤·¤Æ¤¤¤ë¾õÂ֤ʤ顢¥¹¥Ô¡¼¥É¥¢¥Ã¥×¤Ï½èÍý¤·¤Ê¤¤ if (col.gameObject.GetComponent<Condition_ChangeSpeed>()) { return; } // ¥¹¥Ô¡¼¥É¥¢¥Ã¥×¾õÂ֤Ǥʤ¤¤Ê¤é¡¢¥¹¥Ô¡¼¥É¥¢¥Ã¥×ÍÑ¥¯¥é¥¹¤ò¿·¤¿¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤È¤·¤Æ¥¢¥¿¥Ã¥Á¤¹¤ë col.gameObject.AddComponent<Condition_ChangeSpeed>().Setup(speed, conditionTime); // ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤«³Îǧ¤¹¤ë¤¿¤á¤ÎDebug Debug.Log(col.gameObject.GetComponent<Condition_ChangeSpeed>()); // ¤³¤Î¥¢¥¤¥Æ¥à¤òÇ˲õ¤¹¤ë Destroy(gameObject); } } }
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- Áí¹ç
¥³¥á¥ó¥È¤ò¤«¤¯