³Ø½¬¤¹¤ë¤³¤È
<Ìá¤êÃÍ>¤Î»È¤¤Êý
<´Ø¿ô¤Î°ú¿ô>¤Î»È¤¤Êý¡¡¡Ê£¿ô¤Î°ú¿ô¡¡¢¼«ºî¥¯¥é¥¹¤Î°ú¿ô
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤Î<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);
}
}
}