/// <summary> /// コライダ衝突時のイベント /// </summary> /// <param name="collision">衝突対象</param> private void OnCollisionEnter(Collision collision) { // マグネット以外は処理対象外 if (collision.transform.tag != GameUtil.Const.TAG_MAGNET) { return; } // 衝突対象のマグネを取得 MagnetController colMagController = collision.transform.GetComponent <MagnetController>(); // 衝突対象が落下状態で、自身がタワー(マグネット)状態の場合 if (status == State.TOWER_MG && colMagController.status == State.DROP) { // マグネ結合処理 if (GetComponent <Magnet>().attract) { // 落下マグネの高さ以外の位置・回転を合わせる collision.transform.GetComponent <Rigidbody>().velocity = Vector3.zero; collision.transform.rotation = Quaternion.Euler(0.0f, transform.localEulerAngles.y % 360.0f - 180.0f, 0.0f); // タワー(非マグネット)状態に遷移 colMagController.status = State.TOWER_MG; collision.transform.GetComponent <Magnet>().enable = true; collision.transform.GetComponent <Rigidbody>().isKinematic = true; // 自身のマグネットを無効化 status = State.TOWER; GetComponent <Magnet>().enable = false; // カメラターゲットを変更 cameraController.SetLookTarget(collision.gameObject); // スコアを加算する gameSceneManager.AddScore(); } } }
public void IReset() { Reset(); Rigidbody rg = GetComponent <Rigidbody> (); if (rg != null) { GameObject.Destroy(rg); } transform.localRotation = Quaternion.identity; GetComponent <Collider> ().material = ResourceMgr.Instance().m_Ice_PMtl; if (m_IsCoin) { // GetComponent<Renderer> ().material = ResourceMgr.Instance ().m_BrickMtls [ResourceMgr.MTL_ID_EMPTY]; SetBrickChild(); } if (m_MagnetController != null) { ResourceMgr.Instance().FreeMagnetController(m_MagnetController); m_MagnetController = null; } m_AttachMagnet = false; m_IsCoin = false; m_IsCoinAbsorbed = false; m_OnUnbeatableCollided = false; }
MagnetController NewMagnetController() { GameObject go = GameObject.Instantiate(m_Magnet_Prefab) as GameObject; MagnetController mC = go.GetComponent <MagnetController> (); mC.IReset(); return(mC); }
public void IDestory() { if (m_GO != null) { if (m_MagnetController != null) { ResourceMgr.Instance().FreeMagnetController(m_MagnetController); m_MagnetController = null; } GameObject.Destroy(m_GO); m_GO = null; } }
/// <summary> /// 目的の角度までステージとマグネを回転させる処理 /// </summary> private void RotateTowardsStage() { // ステージの回転が目的の角度になったら処理終了 if (targetStage.transform.localEulerAngles.y.ToString("f2") == targetStageRotTo.eulerAngles.y.ToString("f2")) { doRot = false; return; } // ステージを回転させる targetStage.transform.rotation = Quaternion.RotateTowards(targetStage.transform.rotation, targetStageRotTo, rotSpeed * Time.deltaTime); // 磁石を回転させる for (int i = 0; i < targetMagneList.Count; i++) { MagnetController magne = targetMagneList[i]; magne.transform.rotation = Quaternion.RotateTowards(magne.transform.rotation, targetMagneRotToList[i], rotSpeed * Time.deltaTime); } }
protected override void Start() { base.Start(); ammunitionLeft = maxammunition; // get references magnetController = GetComponent<MagnetController>(); animator = transform.Find("PlayerModel").GetComponent<Animator>(); damageImage = GameObject.Find("DamageImage").GetComponent<Image>(); enemyHealthBar = GameObject.Find("EnemyHealth").GetComponent<VisualBar>(); ammunitionText = GameObject.Find("Ammunition").GetComponent<Text>(); smokeController = GetComponent<SmokeController>(); staminaController = GetComponent<StaminaController>(); bombController = GetComponent<BombController>(); ammunitionText.text = ammunitionLeft.ToString(); enemyLayer = LayerMask.GetMask("Enemy"); // Get enemy mask orginalSpeed = horizontalMove; // remember orginal speed because some method can change it currentFuel = maxFuel; healthBar.UpdateBar(currentHealth, maxHealth); // update healthBar }
// プレイヤーのコライダーに触れたやつのタグがMagnetだったときにそこからジャンプしたとき! // そいつのPointEffector2Dコンポーネントと磁石用スクリプトを取得 // effector2dを無効化させて、再び有効にするためのカウンターをセット // そして自分は、N極とS極を設定した時間無効化する。 // effector2dを無効化された相手は、自分のスクリプトの中でカウントダウンができる。 private void OnCollisionStay2D(Collision2D collision) { if (collision.gameObject.tag == "Magnet") { if (isJumpingCheck && inputManager.JumpKey == 1 && isWallStick && !isMagJamp) { PointEffector2D effector2D = collision.gameObject.GetComponent <PointEffector2D>(); MagnetController magnet = collision.gameObject.GetComponent <MagnetController>(); magnet.effectorEnabledTime = magnet.effectorEnabledCounter; magnet.isPoleEnter = false; effector2D.enabled = false; effector2D.forceMagnitude = 0; childEnableCounter = playerManager.ChildReEnableCounter; childEnabled = false; childNMagPole.GetComponent <BoxCollider2D>().enabled = false; childSMagPole.GetComponent <BoxCollider2D>().enabled = false; jumpTimeCounter = playerManager.JumpTime; isJumpingCheck = false; isJumping = true; _jumpPower = playerManager.JumpPower; isWallStick = false; SoundManager.Instance.PlaySeByName("Jump_2"); isMagJamp = true; } else if (isJumpingCheck && inputManager.JumpKey == 1 && !isMagJamp) { SoundManager.Instance.PlaySeByName("Jump_2"); jumpTimeCounter = playerManager.JumpTime; isJumpingCheck = false; isJumping = true; _jumpPower = playerManager.JumpPower; isWallStick = false; isMagJamp = true; } } }
public void IDestory () { if (m_GO != null) { if (m_MagnetController != null) { ResourceMgr.Instance ().FreeMagnetController (m_MagnetController); m_MagnetController = null; } GameObject.Destroy (m_GO); m_GO = null; } }
public void IReset () { Reset (); Rigidbody rg = GetComponent<Rigidbody> (); if (rg != null) GameObject.Destroy (rg); transform.localRotation = Quaternion.identity; GetComponent<Collider> ().material = ResourceMgr.Instance ().m_Ice_PMtl; if (m_IsCoin) { // GetComponent<Renderer> ().material = ResourceMgr.Instance ().m_BrickMtls [ResourceMgr.MTL_ID_EMPTY]; SetBrickChild (); } if (m_MagnetController != null) { ResourceMgr.Instance ().FreeMagnetController (m_MagnetController); m_MagnetController = null; } m_AttachMagnet=false; m_IsCoin = false; m_IsCoinAbsorbed = false; m_OnUnbeatableCollided = false; }
public void FreeMagnetController(MagnetController mC) { m_MagnetController_Pool.Free(mC); }
protected override void Start() { base.Start(); ammunitionLeft = maxammunition; // get references magnetController = GetComponent<MagnetController>(); animator = transform.FindChild("PlayerModel").GetComponent<Animator>(); damageImage = GameObject.Find("DamageImage").GetComponent<Image>(); enemyHealthBar = GameObject.Find("EnemyHealth").GetComponent<VisualBar>(); ammunitionText = GameObject.Find("Ammunition").GetComponent<Text>(); smokeController = GetComponent<SmokeController>(); staminaController = GetComponent<StaminaController>(); bombController = GetComponent<BombController>(); ammunitionText.text = ammunitionLeft.ToString(); enemyLayer = LayerMask.GetMask("Enemy"); // Get enemy mask orginalSpeed = horizontalMove; // remember orginal speed because some method can change it currentFuel = maxFuel; healthBar.UpdateBar(currentHealth, maxHealth); // update healthBar }
public void FreeMagnetController (MagnetController mC) { m_MagnetController_Pool.Free (mC); }
private void Start() { magnetController = GetComponent <MagnetController>(); audioSource = GetComponent <AudioSource>(); audioSource.Play(); }