Ejemplo n.º 1
0
    /// <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();
            }
        }
    }
Ejemplo n.º 2
0
    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;
    }
Ejemplo n.º 3
0
    MagnetController NewMagnetController()
    {
        GameObject       go = GameObject.Instantiate(m_Magnet_Prefab) as GameObject;
        MagnetController mC = go.GetComponent <MagnetController> ();

        mC.IReset();
        return(mC);
    }
Ejemplo n.º 4
0
 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
    }
Ejemplo n.º 7
0
 // プレイヤーのコライダーに触れたやつのタグが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;
         }
     }
 }
Ejemplo n.º 8
0
	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;
		}
	}
Ejemplo n.º 9
0
	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;
	
	}
Ejemplo n.º 10
0
 public void FreeMagnetController(MagnetController mC)
 {
     m_MagnetController_Pool.Free(mC);
 }
Ejemplo n.º 11
0
    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
    }
Ejemplo n.º 12
0
	public void FreeMagnetController (MagnetController mC)
	{
		m_MagnetController_Pool.Free (mC);
	}
 private void Start()
 {
     magnetController = GetComponent <MagnetController>();
     audioSource      = GetComponent <AudioSource>();
     audioSource.Play();
 }