public bool SerchConnectedEdge(ChainEdge chainEdge) { foreach (var connectedObject in connectObjects) { if (connectedObject == chainEdge) { return(true); } } return(false); }
bool CheckEdgePass(ChainEdge edge) { foreach (var connectedObject in connectObjects) { if (edge == connectedObject) { return(true); } } return(false); }
/// <summary> /// 呼び出し側のノードから引数へ渡したノードへ接続する /// </summary> /// <param name="conectNode">接続先のノード</param> /// <param name="chainEdge">この子階層に生成する</param> /// <returns></returns> public IEnumerator Connect(ChainNode conectNode, ChainEdge chainEdge) { float connectingTime = MainGameSceneManager.Instance.GameParameter.ChainConnectTime; float timer = 0f; var chainObject = Instantiate(chain, chainEdge.transform); chainEdge.ChainModel = chainObject; chainObject.transform.position = transform.position; var chainMaterial = chainObject.GetComponent <MeshRenderer>().material; float distance = Vector2.Distance(transform.position, conectNode.transform.position); chainObject.transform.up = (transform.position - conectNode.transform.position).normalized; SoundManager.Instance.PlaySE(chainExtendSound); while (true) { yield return(null); timer += Time.deltaTime; float rate = timer / connectingTime; float distanceRate = timer / connectingTime * distance; if (1 <= rate) { break; } var chainDelta = -chainObject.transform.up * distance * rate; chainObject.transform.position = transform.position + chainDelta; chainMaterial.SetFloat("_Extend", distanceRate); } chainObject.transform.position = transform.position + (-chainObject.transform.up * distance); chainMaterial.SetFloat("_Extend", distance); //ここで接続完了 SoundManager.Instance.PlaySE(connectChainSound); CameraEffects.Instance.Shake(); Instantiate(ringEffect, conectNode.transform.position, ringEffect.transform.rotation); bool b = SequanceManager.Instance.CheckDeadEndNode(conectNode); if (b) { SequanceManager.Instance.ChainAllConect(); } }
public void AddChainNode(ChainNode chainNode, ChainEdge chainEdge = null) { const float ChainNodeImageZ = -0.6f;//モデルに隠れないための調整分; var pos = chainNode.transform.position; pos.z = ChainNodeImageZ; if (connectObjects.Count == 0) { lastChainNodeImage = Instantiate(lastChainNodeImagePrefab, transform); lastChainNodeImage.transform.position = pos; connectObjects.Add(chainNode); return; } Debug.Assert(chainEdge != null); connectObjects.Add(chainEdge); lastChainNodeImage.transform.position = pos; connectObjects.Add(chainNode); FireCounter.Instance.RemoveFire(); }