¡¡Àë¸À¥Õ¥£¡¼¥ë¥É¤Ç¤ÏÇÛÎó¤ÎÂå¤ï¤ê¤Ë
Ballon ·¿¤Î List ¤ÎÀë¸À¤È½é´ü²½¤ò¹Ô¤¤¡¢¥Ð¥ë¡¼¥ó¤Î´ÉÍý¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
public ½¤¾þ»Ò¤Ë¤ÆÀë¸À¤·¤Æ¤¤¤ë¤¿¤á¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤êÍ×ÁǤÎÆâÍƤò³Îǧ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡¤Þ¤¿
GameObject ·¿¤ÇÀë¸À¤·¤ÆÍøÍѤ·¤Æ¤¤¤¿¥Ð¥ë¡¼¥ó¤Î¥×¥ì¥Õ¥¡¥Ö¤ò¡¢Ballon ·¿¤ÎÀë¸À¤ËÊѹ¹¤·¤Þ¤¹¡£
¤³¤ì¤Ï¥Ð¥ë¡¼¥ó¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î List ¤ò Ballon ·¿¤ÇÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤Ë¹ç¤ï¤»¤ë¤¿¤á¤Î½èÍý¤Ç¤¢¤ë¤È¤È¤â¤Ë¡¢
¼«ºî¥¯¥é¥¹¤Ç¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤Æ¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤·¤Æ¤¹¤°¤Ë¥á¥½¥Ã¥É¤Î¼Â¹Ô¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£
¡¡¼«ºî¥¯¥é¥¹¤Ç¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ë¤Ä¤¤¤Æʬ¤«¤é¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢=>¡¡
¼ê½ç£²£±¤òÉü½¬¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
GameObject ·¿¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¤¹¤ë¾ì¹ç¤È¼«ºî¥¯¥é¥¹¤Ç¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Î¾ì¹ç¤Î°ã¤¤¤È¡¢¤É¤Î¤è¤¦¤Ê¾ì¹ç¤ËÍøÍѤ¹¤ë¤Î¤«¤òÇÄ°®¤·¤Æ½èÍý¤Î¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥³¥ì¥¯¥·¥ç¥ó¤ÎŤµ¤ò¼èÆÀ¤¹¤ëÊýË¡¤È¤·¤Æ¡¢ÇÛÎó¤Î¾ì¹ç¤Ï Length ¤òÍøÍѤ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢
List ¤Ï¸½ºß¤ÎŤµ(ºÇÂçÃÍ)¤ò Count ÊÑ¿ô¤Ë¤è¤Ã¤Æ¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
PlayerController.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
private string horizontal = "Horizontal"; // ¥¡¼ÆþÎÏÍѤÎʸ»úÎó»ØÄê
private string jump = "Jump";
private Rigidbody2D rb; // ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀÍÑ
private Animator anim;
private float scale; // ¸þ¤¤ÎÀßÄê¤ËÍøÍѤ¹¤ë
private float limitPosX = 9.5f; // ²£Êý¸þ¤ÎÀ©¸ÂÃÍ
private float limitPosY = 4.45f; // ½ÄÊý¸þ¤ÎÀ©¸ÂÃÍ
private bool isGameOver = false; // GameOver¾õÂÖ¤ÎȽÄêÍÑ¡£true ¤Ê¤é¥²¡¼¥à¥ª¡¼¥Ð¡¼¡£
////* ¤³¤³¤«¤é½¤Àµ *////
//private int ballonCount; // <= List ¤Î¾ì¹ç¡¢ºÇÂçÃͤ¬ÊѲ½¤¹¤ë¤Î¤ÇÉÔÍס£¥³¥á¥ó¥È¥¢¥¦¥È¡¢¤¢¤ë¤¤¤Ïºï½ü
////* ¤³¤³¤Þ¤Ç *////
public bool isFirstGenerateBallon; // ½é¤á¤Æ¥Ð¥ë¡¼¥ó¤òÀ¸À®¤·¤¿¤«¤òȽÄꤹ¤ë¤¿¤á¤ÎÊÑ¿ô
public float moveSpeed; // °Üư®ÅÙ
public float jumpPower; // ¥¸¥ã¥ó¥×¡¦ÉâÍ·ÎÏ
public bool isGrounded;
////* ¤³¤³¤«¤é½¤Àµ *////
//public GameObject[] ballons; // GameObject·¿¤ÎÇÛÎó
public List<Ballon> ballonList = new List<Ballon>(); // Ballon ·¿¤Î¥ê¥¹¥È¤òÀë¸À¤·¤Æ½é´ü²½¤¹¤ë
////* ¤³¤³¤Þ¤Ç *////
public int maxBallonCount; // ¥Ð¥ë¡¼¥ó¤òÀ¸À®¤¹¤ëºÇÂç¿ô
public Transform[] ballonTrans; // ¥Ð¥ë¡¼¥ó¤ÎÀ¸À®°ÌÃÖ¤ÎÇÛÎó
////* ¤³¤³¤«¤é½¤Àµ *////
//public GameObject ballonPrefab; // ¥Ð¥ë¡¼¥ó¤Î¥×¥ì¥Õ¥¡¥Ö¡£²¼¤Ø¿·¤·¤¯¡¢·¿¤òÊѹ¹¤·¤ÆÀë¸À¤¹¤ë¡£
public Ballon ballonPrefab; // ¥Ð¥ë¡¼¥ó¤Î¥×¥ì¥Õ¥¡¥Ö¡£GameObject ·¿¤Ç¤Ï¤Ê¤¯¡¢Ballon ·¿¤ÇÀë¸À¤¹¤ë
////* ¤³¤³¤Þ¤Ç *////
public float generateTime; // ¥Ð¥ë¡¼¥ó¤òÀ¸À®¤¹¤ë»þ´Ö
public bool isGenerating; // ¥Ð¥ë¡¼¥ó¤òÀ¸À®Ã椫¤É¤¦¤«¤òȽÄꤹ¤ë¡£false ¤Ê¤éÀ¸À®¤·¤Æ¤¤¤Ê¤¤¾õÂÖ¡£true ¤ÏÀ¸À®Ãæ¤Î¾õÂÖ
public float knockbackPower; // Ũ¤ÈÀÜ¿¨¤·¤¿ºÝ¤Ë¿á¤Èô¤Ð¤µ¤ì¤ëÎÏ
public int coinPoint; // ¥³¥¤¥ó¤ò³ÍÆÀ¤¹¤ë¤ÈÁý¤¨¤ë¥Ý¥¤¥ó¥È¤ÎÁí¿ô
public UIManager uiManager;
[SerializeField, Header("LinecastÍÑ ÃÏÌÌȽÄê¥ì¥¤¥ä¡¼")]
private LayerMask groundLayer;
[SerializeField]
private StartChecker startChecker;
[SerializeField]
private AudioClip knockbackSE; // Ũ¤ÈÀÜ¿¨¤·¤¿ºÝ¤ËÌĤ餹SEÍѤΥª¡¼¥Ç¥£¥ª¥Õ¥¡¥¤¥ë¤ò¥¢¥µ¥¤¥ó¤¹¤ë
[SerializeField]
private GameObject knockbackEffectPrefab; // Ũ¤ÈÀÜ¿¨¤·¤¿ºÝ¤ËÀ¸À®¤¹¤ë¥¨¥Õ¥§¥¯¥ÈÍѤΥץì¥Õ¥¡¥Ö¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
[SerializeField]
private Joystick joystick; // FloatingJoystick ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë FloatingJoystick ¥¹¥¯¥ê¥×¥È¤Î¥¢¥µ¥¤¥óÍÑ
[SerializeField]
private Button btnJump; // btnJump ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë Button ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¢¥µ¥¤¥óÍÑ
[SerializeField]
private Button btnDetach; // btnDetachOrGenerate ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë Button ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¢¥µ¥¤¥óÍÑ
void Start() {
// ɬÍפʥ³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤·¤ÆÍÑ°Õ¤·¤¿ÊÑ¿ô¤ËÂåÆþ
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
scale = transform.localScale.x;
////* ¤³¤³¤«¤é½¤Àµ *////
¡¡¡¡¡¡¡¡// ÇÛÎó¤Î½é´ü²½(¥Ð¥ë¡¼¥ó¤ÎºÇÂçÀ¸À®¿ô¤À¤±ÇÛÎó¤ÎÍ×ÁÇ¿ô¤òÍÑ°Õ¤¹¤ë)
//ballons = new GameObject[maxBallonCount]; //¡¡<=¡¡¡ù¡¡ÇÛÎó¤ÏÉÔÍפʤΤǥ³¥á¥ó¥È¥¢¥¦¥È¡¢¤¢¤ë¤¤¤Ïºï½ü
////* ¤³¤³¤Þ¤Ç *////
// ¤É¤Î¤è¤¦¤Ê½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¡¢¥³¥á¥ó¥È¤ò½ñ¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£
btnJump.onClick.AddListener(OnClickJump);
btnDetach.onClick.AddListener(OnClickDetachOrGenerate);
}
void Update() {
// ÃÏÌÌÀÜÃÏ Physics2D.Linecast¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¡¢Ground Layer¤È¥¥ã¥é¤Î¥³¥é¥¤¥À¡¼¤È¤¬ÀÜÃϤ·¤Æ¤¤¤ëµ÷Î¥¤«¤É¤¦¤«¤ò³Îǧ¤·¡¢ÀÜÃϤ·¤Æ¤¤¤ë¤Ê¤é true¡¢ÀÜÃϤ·¤Æ¤¤¤Ê¤¤¤Ê¤é false ¤òÌ᤹
isGrounded = Physics2D.Linecast(transform.position + transform.up * 0.4f, transform.position - transform.up * 0.9f, groundLayer);
// Scene¥Ó¥å¡¼¤Ë Physics2D.Linecast¥á¥½¥Ã¥É¤ÎLine¤òɽ¼¨¤¹¤ë
Debug.DrawLine(transform.position + transform.up * 0.4f, transform.position - transform.up * 0.9f, Color.red, 1.0f);
////* ¤³¤³¤«¤é½¤Àµ *////
// ballonList ÊÑ¿ô¤ÎºÇÂçÃͤ¬ 1 °Ê¾å¤Ê¤é = ¥Ð¥ë¡¼¥ó¤¬£±¤Ä°Ê¾å¤¢¤ë¤Ê¤é
if (ballonList.Count > 0) {¡¡¡¡¡¡¡¡¡¡¡¡//¡¡<=¡¡¡ù¡¡¾ò·ï¤òÊѹ¹
////* ¤³¤³¤Þ¤Ç *////
// ¥¸¥ã¥ó¥×
if (Input.GetButtonDown(jump)) {
Jump();
}
// ÀÜÃϤ·¤Æ¤¤¤Ê¤¤(¶õÃæ¤Ë¤¤¤ë)´Ö¤Ç¡¢Íî²¼Ãæ¤Î¾ì¹ç
if (isGrounded == false && rb.velocity.y < 0.15f) {
// Íî²¼¥¢¥Ë¥á¤ò·«¤êÊÖ¤¹
anim.SetTrigger("Fall");
}
} else {
Debug.Log("¥Ð¥ë¡¼¥ó¤¬¤Ê¤¤¡£¥¸¥ã¥ó¥×ÉÔ²Ä");
}
// Velocity.y ¤ÎÃͤ¬ 5.0f ¤òĶ¤¨¤ë¾ì¹ç(¥¸¥ã¥ó¥×¤òϢ³¤Ç²¡¤·¤¿¾ì¹ç)
if(rb.velocity.y > 5.0f) {
// Velocity.y ¤ÎÃͤËÀ©¸Â¤ò¤«¤±¤ë(Íî²¼¤»¤º¤Ë¾å¶õ¤ÇÂÔµ¡¤Ç¤¤Æ¤·¤Þ¤¦¸½¾Ý¤òËɤ°¤¿¤á)
rb.velocity = new Vector2(rb.velocity.x, 5.0f);
}
////* ¤³¤³¤«¤é½¤Àµ *////
// ÃÏÌ̤ËÀÜÃϤ·¤Æ¤¤¤Æ¡¢¥Ð¥ë¡¼¥ó¤¬À¸À®Ãæ¤Ç¤Ï¤Ê¤¯¡¢¤«¤Ä¡¢¥Ð¥ë¡¼¥ó¤¬£²¸Ä°Ê²¼¤Î¾ì¹ç
if (isGrounded == true && isGenerating == false && ballonList.Count < maxBallonCount) { <= ¡ù¡¡¾ò·ï¤òÄɲÃ
////* ¤³¤³¤Þ¤Ç *////
// Q¥Ü¥¿¥ó¤ò²¡¤·¤¿¤é
if (Input.GetKeyDown(KeyCode.Q)) {
////* ¤³¤³¤«¤é½¤Àµ *////
// ¥Ð¥ë¡¼¥ó¤ò£±¤ÄºîÀ®¤¹¤ë
StartCoroutine(GenetateBallon(1, generateTime));¡¡¡¡//¡¡<=¡¡¡ù¡¡°ú¿ô¤òÄɲÃ
////* ¤³¤³¤Þ¤Ç *////
}
}
}
/// <summary>
/// ¥¸¥ã¥ó¥×¤È¶õÃæÉâÍ·
/// </summary>
private void Jump() {
// ¥¥ã¥é¤Î°ÌÃÖ¤ò¾åÊý¸þ¤Ø°ÜÆ°¤µ¤»¤ë(¥¸¥ã¥ó¥×¡¦ÉâÍ·)
rb.AddForce(transform.up * jumpPower);
¡¡¡¡¡¡¡¡// Jump(Up + Mid) ¥¢¥Ë¥á¡¼¥·¥ç¥ó¤òºÆÀ¸¤¹¤ë
¡¡¡¡¡¡¡¡anim.SetTrigger("Jump");
}
void FixedUpdate() {
if (isGameOver == true) {
return;
}
// °ÜÆ°
Move();
}
/// <summary>
/// °ÜÆ°
/// </summary>
private void Move() {
#if UNITY_EDITOR
// ¿åÊ¿(²£)Êý¸þ¤Ø¤ÎÆþÎϼõÉÕ
float x = Input.GetAxis(horizontal);
x = joystick.Horizontal;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡<=¡¡¥¨¥Ç¥£¥¿¡¼¤Ç¤Î³Îǧ¤¬½ªÎ»¤·¤¿¤é¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¯¤À¤µ¤¤
#else
float x = joystick.Horizontal;
#endif
// x ¤ÎÃͤ¬ 0 ¤Ç¤Ï¤Ê¤¤¾ì¹ç = ¥¡¼ÆþÎϤ¬¤¢¤ë¾ì¹ç
if (x != 0) {
// velocity(®ÅÙ)¤Ë¿·¤·¤¤ÃͤòÂåÆþ¤·¤Æ°ÜÆ°
rb.velocity = new Vector2(x * moveSpeed, rb.velocity.y);
¡¡¡¡¡¡¡¡¡¡¡¡// temp ÊÑ¿ô¤Ë¸½ºß¤Î localScale ÃͤòÂåÆþ
Vector3 temp = transform.localScale;
// ¸½ºß¤Î¥¡¼ÆþÎÏÃÍ x ¤ò temp.x ¤ËÂåÆþ
temp.x = x;
// ¸þ¤¤¬ÊѤï¤ë¤È¤¤Ë¾®¿ô¤Ë¤Ê¤ë¤È¥¥ã¥é¤¬½Ì¤ó¤Ç¸«¤¨¤Æ¤·¤Þ¤¦¤Î¤ÇÀ°¿ôÃͤˤ¹¤ë
if (temp.x > 0) {
// ¿ô»ú¤¬0¤è¤ê¤âÂ礤±¤ì¤Ð¤¹¤Ù¤Æ1¤Ë¤¹¤ë
temp.x = scale;
} else {
// ¿ô»ú¤¬0¤è¤ê¤â¾®¤µ¤±¤ì¤Ð¤¹¤Ù¤Æ-1¤Ë¤¹¤ë
temp.x = -scale;
}
¡¡¡¡¡¡¡¡¡¡¡¡// ¥¥ã¥é¤Î¸þ¤¤ò°ÜÆ°Êý¸þ¤Ë¹ç¤ï¤»¤ë
transform.localScale = temp;
// ÂÔµ¡¾õÂ֤Υ¢¥Ë¥á¤ÎºÆÀ¸¤ò»ß¤á¤Æ¡¢Áö¤ë¥¢¥Ë¥á¤ÎºÆÀ¸¤Ø¤ÎÁ«°Ü¤ò¹Ô¤¦
anim.SetBool("Idle", false);
anim.SetFloat("Run", 0.5f);
} else {
¡¡¡¡¡¡¡¡¡¡¡¡// º¸±¦¤ÎÆþÎϤ¬¤Ê¤«¤Ã¤¿¤é²£°ÜÆ°¤Î®ÅÙ¤ò0¤Ë¤·¤Æ¥Ô¥¿¥Ã¤È»ß¤Þ¤ë¤è¤¦¤Ë¤¹¤ë
rb.velocity = new Vector2(0, rb.velocity.y);
// Áö¤ë¥¢¥Ë¥á¤ÎºÆÀ¸¤ò»ß¤á¤Æ¡¢ÂÔµ¡¾õÂ֤Υ¢¥Ë¥á¤ÎºÆÀ¸¤Ø¤ÎÁ«°Ü¤ò¹Ô¤¦
anim.SetFloat("Run", 0.0f);
anim.SetBool("Idle", true);
}
// ¸½ºß¤Î°ÌÃÖ¾ðÊ󤬰ÜÆ°ÈϰϤÎÀ©¸ÂÈϰϤòĶ¤¨¤Æ¤¤¤Ê¤¤¤«³Îǧ¤¹¤ë¡£Ä¶¤¨¤Æ¤¤¤¿¤é¡¢À©¸ÂÈÏ°ÏÆâ¤Ë¼ý¤á¤ë
float posX = Mathf.Clamp(transform.position.x, -limitPosX, limitPosX);
float posY = Mathf.Clamp(transform.position.y, -limitPosY, limitPosY);
// ¸½ºß¤Î°ÌÃÖ¤ò¹¹¿·(À©¸ÂÈϰϤòĶ¤¨¤¿¾ì¹ç¡¢¤³¤³¤Ç°ÜÆ°¤ÎÈϰϤòÀ©¸Â¤¹¤ë)
transform.position = new Vector2(posX, posY);
}
////* ¤³¤³¤«¤é¡ù¡¡Á¢¤ò½¤Àµ *////
¡¡¡¡/// <summary>
/// ¥Ð¥ë¡¼¥óÀ¸À®
/// </summary>
/// <param name="ballonCount">À¸À®¤¹¤ë¥Ð¥ë¡¼¥ó¤Î¿ô</param>
/// <param name="waitTime">£±¤ÄÀ¸À®¤¹¤ëºÝ¤ÎÀ¸À®¤Ë¤«¤«¤ë»þ´Ö</param>
/// <returns></returns>
private IEnumerator GenetateBallon(int ballonCount, float waitTime) {¡¡¡¡¡¡//¡¡<=¡¡¡ù¡¡¡°ú¿ô¤òÄɲÃ
// List ¤ÎÍ×ÁÇ¿ô¤¬ºÇÂç¥Ð¥ë¡¼¥ó¿ô°Ê¾å¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¥Ð¥ë¡¼¥ó¤òÀ¸À®¤·¤Ê¤¤
if (ballonList.Count >= maxBallonCount) {¡¡¡¡¡¡¡¡¡¡¡¡// <=¡¡¡ù¢¡¡¾ò·ï¤òÊѹ¹
////* ¤³¤³¤Þ¤Ç *////
yield break;
}
// À¸À®Ãæ¾õÂ֤ˤ¹¤ë
isGenerating = true;
// isFirstGenerateBallon ÊÑ¿ô¤ÎÃͤ¬ false¡¢¤Ä¤Þ¤ê¡¢¥²¡¼¥à¤ò³«»Ï¤·¤Æ¤«¤é¡¢¤Þ¤À¥Ð¥ë¡¼¥ó¤ò£±²ó¤âÀ¸À®¤·¤Æ¤¤¤Ê¤¤¤Ê¤é
if (isFirstGenerateBallon == false) {
// ½é²ó¥Ð¥ë¡¼¥óÀ¸À®¤ò¹Ô¤Ã¤¿¤ÈȽÃǤ·¡¢true ¤ËÊѹ¹¤¹¤ë = ¼¡²ó°Ê¹ß¤Ï¥Ð¥ë¡¼¥ó¤òÀ¸À®¤·¤Æ¤â¡¢if ʸ¤Î¾ò·ï¤òËþ¤¿¤µ¤Ê¤¯¤Ê¤ê¡¢¤³¤Î½èÍý¤Ë¤ÏÆþ¤é¤Ê¤¤
isFirstGenerateBallon = true;
¡¡¡¡¡¡¡¡¡¡¡¡Debug.Log("½é²ó¤Î¥Ð¥ë¡¼¥óÀ¸À®");
// startChecker ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Æ¤¤¤ë StartChecker ¥¹¥¯¥ê¥×¥È¤Ë¥¢¥¯¥»¥¹¤·¤Æ¡¢SetInitialSpeed ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë
startChecker.SetInitialSpeed();
}
////* ¤³¤³¤«¤é½¤Àµ *////
// ÇÛÎó¤Î½èÍý¤ÏÉÔÍס£¥³¥á¥ó¥È¥¢¥¦¥È¡¢¤¢¤ë¤¤¤Ïºï½ü
¡¡¡¡¡¡¡¡// £±¤Ä¤á¤ÎÇÛÎó¤ÎÍ×ÁǤ¬¶õ¤Ê¤é
//if (ballons[0] == null) {
// 1¤ÄÌܤΥХ롼¥óÀ¸À®¤òÀ¸À®¤·¤Æ¡¢1ÈÖÌܤÎÇÛÎó¤ØÂåÆþ
//ballons[0] = Instantiate(ballonPrefab, ballonTrans[0]);
//ballons[0].GetComponent<Ballon>().SetUpBallon(this);
//} else {
// 2¤ÄÌܤΥХ롼¥óÀ¸À®¤òÀ¸À®¤·¤Æ¡¢2ÈÖÌܤÎÇÛÎó¤ØÂåÆþ
//ballons[1] = Instantiate(ballonPrefab, ballonTrans[1]);
//ballons[1].GetComponent<Ballon>().SetUpBallon(this);
//}
// ¥Ð¥ë¡¼¥ó¤Î¿ô¤òÁý¤ä¤¹
//ballonCount++;
// À¸À®»þ´ÖʬÂÔµ¡
//yield return new WaitForSeconds(generateTime);
¡¡¡¡¡¡¡¡// ¤³¤³¤«¤é List ÍѤνèÍý¤òÄɲÃ
¡¡¡¡¡¡¡¡// °ú¿ô¤Ç»ØÄꤵ¤ì¤¿¿ô¤À¤±¥Ð¥ë¡¼¥ó¤òÀ¸À®
for (int i = 0; i < ballonCount; i++) {
// À¸À®¤µ¤ì¤¿¥Ð¥ë¡¼¥ó¤Î¥¯¥í¡¼¥ó(Ballon ·¿)¤òÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òÀë¸À
Ballon ballon;
¡¡¡¡¡¡¡¡¡¡¡¡// 1¤ÄÌܤΥХ롼¥ó¤ÎÀ¸À®°ÌÃ֤˥Х롼¥ó¤¬¤Ê¤¤¾ì¹ç
if (ballonTrans[0].childCount == 0) {
// 1¤ÄÌܤΥХ롼¥ó¤ÎÀ¸À®°ÌÃ֤˥Х롼¥óÀ¸À®
ballon = Instantiate(ballonPrefab, ballonTrans[0]);
// 1¤ÄÌܤΥХ롼¥ó¤ÎÀ¸À®°ÌÃ֤˥Х롼¥ó¤¬¤¢¤ë¾ì¹ç
} else {
// 2¤ÄÌܤΥХ롼¥ó¤ÎÀ¸À®°ÌÃ֤˥Х롼¥óÀ¸À®
ballon = Instantiate(ballonPrefab, ballonTrans[1]);
}
// ¥Ð¥ë¡¼¥ó¤ÎÀßÄê(Ballon ·¿¤ÇÀ¸À®¤·¤ÆÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢GetComponent ¥á¥½¥Ã¥É¤ò¹Ô¤¦¤³¤È¤Ê¤¯¡¢¤¹¤°¤Ë¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·Ì¿Îá¤ò¼Â¹Ô¤Ç¤¤ë)
ballon.SetUpBallon(this);
// List ¤ËÄɲÃ
ballonList.Add(ballon);
// ¥Ð¥ë¡¼¥óÀ¸À®»þ´Öʬ¤À¤±ÂÔµ¡
yield return new WaitForSeconds(waitTime);
}
////* ¤³¤³¤Þ¤Ç *////
// À¸À®Ãæ¾õÂÖ½ªÎ»¡£ºÆÅÙÀ¸À®¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë
isGenerating = false;
}
¡¡¡¡private void OnCollisionEnter2D(Collision2D col) {
// ÀÜ¿¨¤·¤¿¥³¥é¥¤¥À¡¼¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎTag¤¬Enemy¤Ê¤é
if (col.gameObject.tag == "Enemy") {
// ¥¥ã¥é¤ÈŨ¤Î°ÌÃÖ¤«¤éµ÷Î¥¤ÈÊý¸þ¤ò·×»»
Vector3 direction = (transform.position - col.transform.position).normalized;
// Ũ¤ÎÈ¿ÂЦ¤Ë¥¥ã¥é¤ò¿á¤Èô¤Ð¤¹
transform.position += direction * knockbackPower;
// Ũ¤È¤ÎÀÜ¿¨ÍѤÎSE(AudioClip)¤òºÆÀ¸¤¹¤ë
AudioSource.PlayClipAtPoint(knockbackSE, transform.position);
// ÀÜ¿¨¤·¤¿ºÝ¤Î¥¨¥Õ¥§¥¯¥È¤ò¡¢Å¨¤Î°ÌÃ֤ˡ¢¥¯¥í¡¼¥ó¤È¤·¤ÆÀ¸À®¤¹¤ë¡£À¸À®¤µ¤ì¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÊÑ¿ô¤ØÂåÆþ
GameObject knockbackEffect = Instantiate(knockbackEffectPrefab, col.transform.position, Quaternion.identity);
// ¥¨¥Õ¥§¥¯¥È¤ò 0.5 Éøå¤ËÇË´þ
Destroy(knockbackEffect, 0.5f);
}
}
////* ¤³¤³¤«¤é½¤Àµ *////
/// <summary>
/// ¥Ð¥ë¡¼¥óÇ˲õ
/// </summary>
/// <param name="ballon"></param>
public void DestroyBallon(Ballon ballon) { <= ¡ù¡¡°ú¿ô¤òÄɲ乤ë
¡¡¡¡¡¡¡¡// List ¤«¤éºï½ü
ballonList.Remove(ballon);
Destroy(ballon.gameObject);
// °Ê²¼¤Î½èÍý¤ÏÇÛÎó¤Î½èÍý¤Ê¤Î¤ÇÉÔÍס£¥³¥á¥ó¥È¥¢¥¦¥È¡¢¤¢¤ë¤¤¤Ïºï½ü
//if (ballons[1] != null) {
// Destroy(ballons[1]);
//} else if (ballons[0] != null){
// Destroy(ballons[0]);
//}
// ¥Ð¥ë¡¼¥ó¤Î¿ô¤ò¸º¤é¤¹
//ballonCount--;
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¡¡// IsTrigger¤¬¥ª¥ó¤Î¥³¥é¥¤¥À¡¼¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÄ̲ᤷ¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¥á¥½¥Ã¥É
private void OnTriggerEnter2D(Collider2D col) {
// Ä̲ᤷ¤¿¥³¥é¥¤¥À¡¼¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Tag ¤¬ Coin ¤Î¾ì¹ç
if (col.gameObject.tag == "Coin") {
// Ä̲ᤷ¤¿¥³¥¤¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»ý¤Ä Coin ¥¹¥¯¥ê¥×¥È¤ò¼èÆÀ¤·¡¢point ÊÑ¿ô¤ÎÃͤò¥¥ã¥é¤Î»ý¤Ä coinPoint ÊÑ¿ô¤Ë²Ã»»
coinPoint += col.gameObject.GetComponent<Coin>().point;
¡¡¡¡¡¡¡¡¡¡¡¡uiManager.UpdateDisplayScore(coinPoint);
¡¡¡¡¡¡¡¡¡¡¡¡// Ä̲ᤷ¤¿¥³¥¤¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë
Destroy(col.gameObject);
}
}
/// <summary>
/// ¥²¡¼¥à¥ª¡¼¥Ð¡¼
/// </summary>
public void GameOver() {
isGameOver = true;
// Console ¥Ó¥å¡¼¤Ë isGameOver ÊÑ¿ô¤ÎÃͤòɽ¼¨¤¹¤ë¡£¤³¤³¤¬¼Â¹Ô¤µ¤ì¤ë¤È true ¤Èɽ¼¨¤µ¤ì¤ë
Debug.Log(isGameOver);
¡¡¡¡¡¡¡¡// ²èÌ̤˥²¡¼¥à¥ª¡¼¥Ð¡¼É½¼¨¤ò¹Ô¤¦
uiManager.DisplayGameOverInfo();
}
/// <summary>
/// ¥¸¥ã¥ó¥×¥Ü¥¿¥ó¤ò²¡¤·¤¿ºÝ¤Î½èÍý
/// </summary>
private void OnClickJump() {
////* ¤³¤³¤«¤é½¤Àµ *////
// ¥Ð¥ë¡¼¥ó¤¬£±¤Ä°Ê¾å¤¢¤ë¤Ê¤é
if (ballonList.Count > 0) { <= ¡ù¡¡¾ò·ï¤òÊѹ¹
////* ¤³¤³¤Þ¤Ç *////
Jump();
}
}
/// <summary>
/// ¥Ð¥ë¡¼¥óÀ¸À®¥Ü¥¿¥ó¤ò²¡¤·¤¿ºÝ¤Î½èÍý
/// </summary>
private void OnClickDetachOrGenerate() {
////* ¤³¤³¤«¤é½¤Àµ *////
// ÃÏÌ̤ËÀÜÃϤ·¤Æ¤¤¤Æ¡¢¸½ºß¤Î¥Ð¥ë¡¼¥ó¤Î¿ô¤¬ºÇÂçÃͰʲ¼¤Î¾ì¹ç
if (isGrounded == true && isGenerating == false && ballonList.Count < maxBallonCount) { // <= ¡ù¡¡¾ò·ï¤òÄɲÃ
// ÃÏÌ̤ËÀÜÃϤ·¤Æ¤¤¤Æ¡¢¥Ð¥ë¡¼¥ó¤¬£²¸Ä°Ê²¼¤Î¾ì¹ç
// ¥Ð¥ë¡¼¥ó¤ÎÀ¸À®Ãæ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Ð¥ë¡¼¥ó¤ò£±¤Ä¡¢genetateTime É䫤±¤ÆºîÀ®¤¹¤ë
StartCoroutine(GenetateBallon(1, generateTime)); // <= °ú¿ô¤òÄɲÃ
////* ¤³¤³¤Þ¤Ç *////
}
}
}
¡¡¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤¬½ªÎ»¤·¤¿¤é¡¢Yuko_Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
PlayerController ¥¹¥¯¥ê¥×¥È¤Ë¿·¤·¤¯Àë¸À¤·¤¿ÊÑ¿ô¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
Yuko_Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü