¡¡¿·¤·¤¤ÊÑ¿ô¤ÎÄɲäϤ¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢´û¸¤Î¥á¥½¥Ã¥É¤Ø¤Î½¤Àµ¤äÄɲä⤢¤ê¤Þ¤»¤ó¡£
¡¡¿·¤·¤¤¥á¥½¥Ã¥É¤ò£³¤ÄºîÀ®¤·¡¢¥¥ã¥é¤ÎÀ©¸æ¤È¥¹¥³¥¢¤ÎÀ©¸æ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡StopMove ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î»ý¤Ä IsKinematic ¤Î¥¹¥¤¥Ã¥Á¤¬¥ª¥ó¤Ë¤Ê¤ê¡¢ÊªÍý±é»»¤òÄä»ß¤·¡¢¥¥ã¥é¤Î®ÅÙ¤ò 0 ¤Ë¤·¤ÆÍî²¼¤â´Þ¤á¤ÆÄä»ß¤µ¤»¤Þ¤¹¡£
Velocity ¤ÎÃͤ⹹¿·¤µ¤ì¤Ê¤¯¤Ê¤ë¤¿¤á¡¢¥¡¼ÆþÎϤò¹Ô¤Ã¤Æ¤â¥¥ã¥é¤¬°ÜÆ°¤·¤Ê¤¤¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥É¤ò ObstacleFlower ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¿¯Æþ¤·¤¿ºÝ¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢¥¥ã¥é¤Î°ÜÆ°¤¬¤Ç¤¤Ê¤¤¤è¤¦¤ËÀ©¸æ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡ResumeMove ¥á¥½¥Ã¥É¤Ç¤Ï¡¢µÕ¤Ë¡¢IsKinematic ¤Î¥¹¥¤¥Ã¥Á¤ò¥ª¥Õ¤Ë¤·¡¢¤¤¤Þ¤Þ¤Ç¤Î¾õÂÖ¤ËÌᤷ¤ÆʪÍý±é»»¤ò͸ú¤Ë¤·¤Þ¤¹¡£
¤Þ¤¿Í®ÅÙ¤òÍ¿¤¨¤Æ¡¢¥¥ã¥é¤¬ºÆ¤ÓÍî²¼¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ÊªÍý±é»»¤¬³«»Ï¤µ¤ì¤ì¤Ð Velocity ¤ÎÃͤ¬¹¹¿·¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¥¡¼ÆþÎϤˤè¤ë°ÜÆ°¤¬Éü³è¤·¤Þ¤¹¡£
¡¡HalveScore ¥á¥½¥Ã¥É¤Ç¤Ï¡¢¥¹¥³¥¢¤ÎÃͤòȾʬ¤Ë¤¹¤ë½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£CeilToInt ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢·×»»·ë²Ì¤Ë¾®¿ôÅÀ¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤ÏÀÚ¤ê¾å¤²½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢²èÌ̾å¤Î¥¹¥³¥¢É½¼¨¤â¡¢¤³¤ÎȾʬ¤Ë¤Ê¤Ã¤¿Ãͤǹ¹¿·¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¤¤¤º¤ì¤Î¥á¥½¥Ã¥É¤â¡¢ObstacleFlower ¥¹¥¯¥ê¥×¥È¤è¤ê¡¢Å¬µ¹¤Ê½èÍý¤Î¥¿¥¤¥ß¥ó¥°¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¥¥ã¥é¤Î°ÜÆ°À©¸æ¤È¥¹¥³¥¢¤ÎÀ©¸æ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
PlayerController.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.UI;
using Coffee.UIExtensions;
public class PlayerController : MonoBehaviour
{
[Header("°Üư®ÅÙ")]
public float moveSpeed;
[Header("Í®ÅÙ")]
public float fallSpeed;
[Header("Ãå¿åȽÄêÍÑ¡£true¤Ê¤éÃå¿åºÑ")]
public bool inWater;
// ¥¥ã¥é¤Î¾õÂ֤μïÎà
public enum AttitudeType {
Straight, // ľ³ê¹ß(Ä̾ï»þ)
Prone, // Éú¤»
}
[Header("¸½ºß¤Î¥¥ã¥é¤Î»ÑÀª")]
public AttitudeType attitudeType;
private Rigidbody rb;
private float x;
private float z;
private Vector3 straightRotation = new Vector3(180, 0, 0); // Ƭ¤ò²¼(¿åÌÌÊý¸þ)¤Ë¸þ¤±¤ëºÝ¤Î²óž³ÑÅÙ¤ÎÃÍ
private int score; // ²ÖÎؤòÄ̲ᤷ¤¿ºÝ¤ÎÆÀÅÀ¤Î¹ç·×ÃÍ´ÉÍýÍÑ
private Vector3 proneRotation = new Vector3(-90, 0, 0); // Éú¤»¤Î»ÑÀª¤Î²óž³ÑÅÙ¤ÎÃÍ
private float attitudeTimer; // »ÑÀªÊѹ¹¤¬²Äǽ¤Ë¤Ê¤ë¤Þ¤Ç¤Î·×¬ÍÑ¥¿¥¤¥Þ¡¼
private float chargeTime = 2.0f; // »ÑÀªÊѹ¹¤¬²Äǽ¤Ë¤Ê¤ë¤Þ¤Ç¤Î¥Á¥ã¡¼¥¸(ÂÔµ¡)»þ´Ö
private bool isCharge; // ¥Á¥ã¡¼¥¸´°Î»È½ÄêÍÑ¡£false ¤Ï̤´°Î»(¥Á¥ã¡¼¥¸Ãæ)¡¢true ¤Ï¥Á¥ã¡¼¥¸´°Î»
private Animator anim;
[SerializeField, Header("¿å¤·¤Ö¤¤Î¥¨¥Õ¥§¥¯¥È")]
private GameObject waterEffectPrefab = null;
[SerializeField, Header("¿å¤·¤Ö¤¤ÎSE")]
private AudioClip splashSE = null;
[SerializeField]
private Text txtScore;
[SerializeField]
private Button btnChangeAttitude;
[SerializeField]
private Image imgGauge;
[SerializeField]
private ShinyEffectForUGUI shinyEffect;
[SerializeField]
private Transform limitLeftBottom;¡¡¡¡¡¡¡¡// ²èÌ̺¸²¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¾ðÊó
[SerializeField]
private Transform limitRightTop; // ²èÌ̱¦¾å¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¾ðÊó
[SerializeField]
private FloatingJoystick joystick;
void Start() {
rb = GetComponent<Rigidbody>();
// ½é´ü¤Î»ÑÀª¤òÀßÄê(Ƭ¤ò¿åÌÌÊý¸þ¤Ë¸þ¤±¤ë)
transform.eulerAngles = straightRotation;
¡¡¡¡¡¡¡¡// ¸½ºß¤Î»ÑÀª¤ò¡Öľ³ê¹ß¡×¤ËÊѹ¹(¤¤¤Þ¤Þ¤Ç¤Î»ÑÀª)
attitudeType = AttitudeType.Straight;
¡¡¡¡¡¡¡¡// ¥Ü¥¿¥ó¤ÎOnClick¥¤¥Ù¥ó¥È¤Ë ChangeAttitude ¥á¥½¥Ã¥É¤òÄɲ乤ë
¡¡¡¡¡¡¡¡btnChangeAttitude.onClick.AddListener(ChangeAttitude);
¡¡¡¡¡¡¡¡// ¥Ü¥¿¥ó¤òÈó³èÀ²½(ȾƩÌÀ¤Ç²¡¤»¤Ê¤¤¾õÂÖ)
btnChangeAttitude.interactable = false;
anim = GetComponent<Animator>();
}
void FixedUpdate() {
// Ãå¿å¤·¤¿¤é¡¢°ÜÆ°¤µ¤»¤Ê¤¤
if (inWater) {
return;
}
// ¥¡¼ÆþÎϤμõÉÕ
x = Input.GetAxis("Horizontal");
z = Input.GetAxis("Vertical");
// ¥¸¥ç¥¤¥¹¥Æ¥£¥Ã¥¯¤Ë¤è¤ëÆþÎϤμõÉÕ
x = joystick.Horizontal;
z = joystick.Vertical;
// ¼Ð¤á°ÜÆ°¤Îµ÷Î¥¤¬Áý¤¨¤Ê¤¤¤è¤¦¤ËÀµµ¬²½½èÍý¤ò¹Ô¤¤¡¢Ã±°Ì¥Ù¥¯¥È¥ë¤È¤¹¤ë(Êý¸þ¤Î¾ðÊó¤Ï»ý¤Á¤Ä¤Ä¡¢µ÷Î¥¤Ë¤è¤ë®ÅÙº¹¤ò¤Ê¤¯¤·¤Æ°ìÄêÃͤˤ¹¤ë)
Vector3 direction = new Vector3(x, 0, z).normalized;
// velocity(®ÅÙ)¤Ë¿·¤·¤¤ÃͤòÂåÆþ¤·¤Æ°ÜÆ°
rb.velocity = new Vector3(direction.x * moveSpeed, -fallSpeed, direction.z * moveSpeed);
}
¡¡¡¡// IsTrigger¤¬¥ª¥ó¤Î¥³¥é¥¤¥À¡¼¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÄ̲ᤷ¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¥á¥½¥Ã¥É
private void OnTriggerEnter(Collider col) {
// Ä̲ᤷ¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎTag¤¬ Water ¤Ç¤¢¤ê¡¢¤«¤Ä¡¢isWater ¤¬ false(̤Ãå¿å)¤Ç¤¢¤ë¤Ê¤é
if (col.gameObject.tag == "Water" && inWater == false) {
// Ãå¿å¾õÂÖ¤ËÊѹ¹¤¹¤ë
inWater = true;
// ¿å¤·¤Ö¤¤Î¥¨¥Õ¥§¥¯¥È¤òÀ¸À®
GameObject effect = Instantiate(waterEffectPrefab, transform.position, Quaternion.identity);
effect.transform.position = new Vector3(effect.transform.position.x, effect.transform.position.y, effect.transform.position.z - 0.5f);
// ¥¨¥Õ¥§¥¯¥È¤ò£²Éøå¤ËÇ˲õ
Destroy(effect, 2.0f);
¡¡¡¡¡¡¡¡¡¡¡¡// ¿å¤·¤Ö¤¤ÎSE¤òºÆÀ¸
¡¡¡¡¡¡¡¡¡¡¡¡AudioSource.PlayClipAtPoint(splashSE, transform.position);
¡¡¡¡¡¡¡¡¡¡¡¡// ¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Ç¤¢¤ë OutOfWater ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹
StartCoroutine(OutOfWater());
}
¡¡¡¡¡¡¡¡// ¿¯Æþ¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Tag ¤¬ FlowerCircle ¤Ê¤é
if (col.gameObject.tag == "FlowerCircle") {
// ¿¯Æþ¤·¤¿ FlowerCircle Tag ¤ò»ý¤Ä¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(Collider)¤Î¿Æ¥ª¥Ö¥¸¥§¥¯¥È(FlowerCircle)¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë FlowerCircle ¥¹¥¯¥ê¥×¥È¤ò¼èÆÀ¤·¤Æ¡¢point ÊÑ¿ô¤ò»²¾È¤·¡¢ÆÀÅÀ¤ò²Ã»»¤¹¤ë
score += col.transform.parent.GetComponent<FlowerCircle>().point;
// ²èÌ̤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ëÆÀÅÀɽ¼¨¤ò¹¹¿·
¡¡¡¡¡¡¡¡¡¡¡¡txtScore.text = score.ToString();
}
}
/// <summary>
/// ¿åÌ̤˴é¤ò½Ð¤¹
/// </summary>
/// <returns></returns>
private IEnumerator OutOfWater()
{
// £±ÉÃÂÔ¤Ä
yield return new WaitForSeconds(1.0f); // <= yield ¤Ë¤è¤ë½èÍý¡£yield return new WaitForSeconds¥á¥½¥Ã¥É¤Ï¡¢°ú¿ô¤Ç»ØÄꤷ¤¿Éÿô¤À¤±¼¡¤Î½èÍý¤Ø°Ü¤é¤º¤Ë½èÍý¤ò°ì»þÄä»ß¤¹¤ë½èÍý
// Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î IsKinematic ¤Ë¥¹¥¤¥Ã¥Á¤òÆþ¤ì¤Æ¥¥ã¥é¤ÎÁàºî¤òÄä»ß¤¹¤ë
rb.isKinematic = true;
// ¥¥ã¥é¤Î»ÑÀª¡Ê²óž¡Ë¤òÊѹ¹¤¹¤ë
transform.eulerAngles = new Vector3(-30, 180, 0);
// DOTween¤òÍøÍѤ·¤Æ¡¢£±É䫤±¤Æ¿åÃ椫¤é¿åÌ̤ؤȥ¥ã¥é¤ò°ÜÆ°¤µ¤»¤ë
transform.DOMoveY(4.7f, 1.0f);
}
void Update() {
if (inWater) {
// ¥Ü¥¿¥ó¤òÈó³èÀ²½¤·¤Æ²¡¤»¤Ê¤¤¾õÂ֤ˤ¹¤ë
btnChangeAttitude.interactable = false;
return;
}
// °ÜÆ°ÈÏ°ÏÆ⤫³Îǧ
LimitMoveArea();
// ¥¹¥Ú¡¼¥¹¥¡¼¤ò²¡¤·¤¿¤é
if (Input.GetKeyDown(KeyCode.Space)) {
// »ÑÀª¤ÎÊѹ¹
ChangeAttitude();
}
¡¡¡¡¡¡¡¡// ¥Á¥ã¡¼¥¸´°Î»¾õÂ֤ǤϤʤ¯¡¢»ÑÀª¤¬ÉáÄ̤ξõÂÖ
if (isCharge == false && attitudeType == AttitudeType.Straight) {
// ¥¿¥¤¥Þ¡¼¤ò²Ã»»¤¹¤ë = ¥Á¥ã¡¼¥¸¤ò¹Ô¤¦
attitudeTimer += Time.deltaTime;
// ¥²¡¼¥¸É½¼¨¤ò¹¹¿·
imgGauge.DOFillAmount(attitudeTimer / chargeTime, 0.1f);
// ¥Ü¥¿¥ó¤òÈó³èÀ²½(ȾƩÌÀ¤Ç²¡¤»¤Ê¤¤¾õÂÖ)
btnChangeAttitude.interactable = false;
// ¥¿¥¤¥Þ¡¼¤¬¥Á¥ã¡¼¥¸»þ´Ö(Ëþ¥¿¥ó)¤Ë¤Ê¤Ã¤¿¤é
if (attitudeTimer >= chargeTime) {
// ¥¿¥¤¥Þ¡¼¤ÎÃͤò¥Á¥ã¡¼¥¸¤Î»þ´Ö¤Ç»ß¤á¤ë¤è¤¦¤Ë¤¹¤ë
attitudeTimer = chargeTime;
// ¥Á¥ã¡¼¥¸¾õÂ֤ˤ¹¤ë
isCharge = true;
// ¥Ü¥¿¥ó¤ò³èÀ²½(²¡¤»¤ë¾õÂÖ)
btnChangeAttitude.interactable = true;
// Ëþ¥¿¥ó»þ¤Î¥¨¥Õ¥§¥¯¥È
shinyEffect.Play(0.5f);
}
}
// »ÑÀª¤¬Éú¤»¤Î¾õÂÖ
if (attitudeType == AttitudeType.Prone) {
// ¥¿¥¤¥Þ¡¼¤ò¸º»»¤¹¤ë = ¥Á¥ã¡¼¥¸¤ò¸º¤é¤¹
attitudeTimer -= Time.deltaTime;
// ¥²¡¼¥¸É½¼¨¤ò¹¹¿·
imgGauge.DOFillAmount(attitudeTimer / chargeTime, 0.1f);
// ¥¿¥¤¥Þ¡¼(¥Á¥ã¡¼¥¸)¤¬ 0 °Ê²¼¤Ë¤Ê¤Ã¤¿¤é
if (attitudeTimer <= 0) {
// ¥¿¥¤¥Þ¡¼¤ò¥ê¥»¥Ã¥È¤·¤Æ¡¢ºÆÅٷ׬¤Ç¤¤ë¾õÂ֤ˤ¹¤ë
attitudeTimer = 0;
// ¥Ü¥¿¥ó¤òÈó³èÀ²½(ȾƩÌÀ¤Ç²¡¤»¤Ê¤¤¾õÂÖ)
btnChangeAttitude.interactable = false;
// ¶¯À©Åª¤Ë»ÑÀª¤òľ³ê¹ß¤ËÌ᤹
ChangeAttitude();
}
}
}
/// <summary>
/// »ÑÀª¤ÎÊѹ¹
/// </summary>
private void ChangeAttitude() {
// ¸½ºß¤Î»ÑÀª¤Ë±þ¤¸¤Æ»ÑÀª¤òÊѹ¹¤¹¤ë
switch (attitudeType) {
¡¡¡¡¡¡¡¡¡¡¡¡// ¸½ºß¤Î»ÑÀª¤¬¡Öľ³ê¹ß¡×¤À¤Ã¤¿¤é
case AttitudeType.Straight:
// ̤¥Á¥ã¡¼¥¸¾õÂÖ(¥Á¥ã¡¼¥¸Ãæ)¤Ê¤é
if(isCharge == false) {
// °Ê¹ß¤Î½èÍý¤ò¹Ô¤ï¤Ê¤¤ = ̤¥Á¥ã¡¼¥¸¾õÂ֤ʤΤǡ¢¥Á¥ã¡¼¥¸»þ¤Î½èÍý¤ò¹Ô¤¨¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
return;
}
// ¥Á¥ã¡¼¥¸¾õÂÖ¤ò̤¥Á¥ã¡¼¥¸¾õÂ֤ˤ¹¤ë
isCharge = false;
// ¸½ºß¤Î»ÑÀª¤ò¡ÖÉú¤»¡×¤ËÊѹ¹
attitudeType = AttitudeType.Prone;
// ¥¥ã¥é¤ò²óž¤µ¤»¤Æ¡ÖÉú¤»¡×¤Ë¤¹¤ë
transform.DORotate(proneRotation, 0.25f, RotateMode.WorldAxisAdd);
// ¶õµ¤Äñ¹³¤ÎÃͤò¾å¤²¤ÆÍ®ÅÙ¤òÃÙ¤¯¤¹¤ë
rb.drag = 25.0f;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥Ü¥¿¥ó¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Î²èÁü¤ò²óž¤µ¤»¤ë
btnChangeAttitude.transform.GetChild(0).DORotate(new Vector3(0, 0, 180), 0.25f);
// Éú¤»¤Î¾õÂÖ¤ËÁ«°Ü¤¹¤ë¤¿¤á¤Î¾ò·ï¤ò»ØÄꤹ¤ë => idle ¤«¤é stan ¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ËÁ«°Ü¤¹¤ë
anim.SetBool("Prone", true);
// ½èÍý¤òÈ´¤±¤ë(¼¡¤Î case ¤Ë¤Ï½èÍý¤¬Æþ¤é¤Ê¤¤)
break;
// ¸½ºß¤Î»ÑÀª¤¬¡ÖÉú¤»¡×¤À¤Ã¤¿¤é
case AttitudeType.Prone:
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¸½ºß¤Î»ÑÀª¤ò¡Öľ³ê¹ß¡×¤ËÊѹ¹
attitudeType = AttitudeType.Straight;
// ¥¥ã¥é¤ò²óž¤µ¤»¤Æ¡Öľ³ê¹ß¡×¤Ë¤¹¤ë
transform.DORotate(straightRotation, 0.25f);
// ¶õµ¤Äñ¹³¤ÎÃͤò¸µ¤ËÌᤷ¤ÆÍ®ÅÙ¤òÌ᤹
rb.drag = 0f;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥Ü¥¿¥ó¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Î²èÁü¤ò²óž¤µ¤»¤ë
btnChangeAttitude.transform.GetChild(0).DORotate(new Vector3(0, 0, 90), 0.25f);
// Éú¤»¤Î¾õÂÖ¤ò»ß¤á¤ë¤¿¤á¤ÎÁ«°Ü¤Î¾ò·ï¤ò»ØÄꤹ¤ë => stan ¤«¤é idle ¤ËÁ«°Ü¤¹¤ë
anim.SetBool("Prone", false);
// ½èÍý¤òÈ´¤±¤ë
break;
}
}
/// <summary>
/// °ÜÆ°ÈϰϤγÎǧ¤ÈÀ©¸Â
/// </summary>
private void LimitMoveArea() {
// ¸½ºß¤ÎX¤Î°ÌÃÖ¤¬°ÜÆ°ÈÏ°ÏÆâ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤ë¤«³Îǧ¤·¡¢Ä¶¤¨¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï²¼¸Â(º¸Ã¼)¤«¾å¸Â(±¦Ã¼)¤Ë¹ç¤ï¤»¤ë
float limitX = Mathf.Clamp(transform.position.x, limitLeftBottom.position.x, limitRightTop.position.x);
// ¸½ºß¤ÎZ¤Î°ÌÃÖ¤¬°ÜÆ°ÈÏ°ÏÆâ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤ë¤«³Îǧ¤·¡¢Ä¶¤¨¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï²¼¸Â(¼êÁ°Â¦)¤«¾å¸Â(±ü¦)¤Ë¹ç¤ï¤»¤ë
float limitZ = Mathf.Clamp(transform.position.z, limitLeftBottom.position.z, limitRightTop.position.z);
// À©¸ÂÃÍÆâ¤Ë¤Ê¤ë¤è¤¦¤Ë°ÌÃÖ¾ðÊó¤ò¹¹¿·
transform.position = new Vector3(limitX, transform.position.y, limitZ);
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£³¤ÄÄɲà *////
/// <summary>
/// ¥¥ã¥é¤ÎÍî²¼¤È°ÜÆ°¤ò°ì»þÄä»ß
/// </summary>
public void StopMove() {
// ¥¥ã¥é¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òʪÍý±é»»¤Î±Æ¶Á¤ò¼õ¤±¤Ê¤¤¾õÂ֤ˤ¹¤ë(½ÅÎϤαƶÁ¤ò¼õ¤±¤Ê¤¤)
rb.isKinematic = true;
// ¥¥ã¥é¤Î®ÅÙ¤ò 0 ¤Ë¤·¤ÆÄä»ß¤¹¤ë
rb.velocity = Vector3.zero;
}
/// <summary>
/// ¥¥ã¥é¤ÎÍî²¼¤È°ÜÆ°¤òºÆ³«
/// </summary>
public void ResumeMove() {
// ¥¥ã¥é¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òʪÍý±é»»¤Î±Æ¶Á¤ò¼õ¤±¤ë¾õÂÖ¤ËÌ᤹(ºÆ¤Ó½ÅÎϤαƶÁ¤ò¼õ¤±¤ë¤è¤¦¤Ë¤Ê¤ë)
rb.isKinematic = false;
// ¥¥ã¥é¤ËÍ®ÅÙ¤òÀßÄꤹ¤ë
rb.velocity = new Vector3(0, -fallSpeed, 0);
}
/// <summary>
/// ¥¹¥³¥¢¤òȾʬ¤Ë¤¹¤ë
/// </summary>
public void HalveScore() {
// ¥¹¥³¥¢¤òȾʬ¤Ë¤¹¤ë
score = Mathf.CeilToInt(score * 0.5f);
Debug.Log("¥¹¥³¥¢È¾Ê¬ : " + score);
¡¡¡¡¡¡¡¡// ²èÌ̤Υ¹¥³¥¢É½¼¨¤ò¹¹¿·
txtScore.text = score.ToString();
}
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤¬´°À®¤·¤¿¤é¡¢Penguin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é PlayerController ¥¹¥¯¥ê¥×¥È¤ò³Îǧ¤·¤Þ¤¹¡£
¿·¤·¤¯ SerializeField°À¤ÇÀë¸À¤·¤Æ¤¤¤ëÊÑ¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¸µ¤«¤é¤¢¤ë³ÆÊÑ¿ô¤Î¥¢¥µ¥¤¥ó¤¬³°¤ì¤Æ¤¤¤Ê¤±¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
Penguin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü
¡¡¼¡¤Ë¡¢ObstacleFlower ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Þ¤¹¡£