// Start is called before the first frame update void Start() { animator = GetComponent <Animator>(); pit = GetComponentInChildren <PitPoint>(); InitTale(Tale); for (int i = 0; i < Tales.Count; i++) { Transform t = Tales[i]; Transform ik = new GameObject("IKObj").transform; ik.parent = t.parent; ik.transform.localPosition = t.localPosition; Transform dIK = new GameObject("dIKObj").transform; dIK.position = t.parent.position; dIK.rotation = t.parent.rotation; if (i + 1 < Tales.Count) { ik.LookAt(Tales[i + 1]); } else { ik.LookAt(ik.position + (ik.position - Tales[i - 1].position)); } dIK.parent = ik; t.parent = dIK; ikTales.Add(ik, ik.localRotation); } lr = gameObject.AddComponent <LineRenderer>(); lr.startWidth = 0.1f; lr.endWidth = 0.1f; lr.positionCount = 2; }
private void FixedUpdate() { float TimeSpeed = Time.deltaTime * 10f; //defenseモード切替 ballingFlag_prev = ballingFlag; inPlayerFlag_prev = inPlayerFlag; if (kb_L3.EnterCheck(defenseDelay <= 0f)) { ballingFlag = !ballingFlag; inPlayerFlag = ballingFlag; defenseDelay = 0.3f; if (ballingFlag) { currentPit = PitPoint.search(transform); } else { currentPit = null; rb.isKinematic = false; transform.parent = null; } } //inPlayerFlag切り替え if (kb_B.EnterCheck(ballingFlag && defenseDelay <= 0f)) { inPlayerFlag = false; } //プレイヤー制御 if (EnterInPlayerFlag) { playerBall.gameObject.SetActive(false); } if (ExitInPlayerFlag) { playerBall.Warp(); playerBall.SetVelocity(rb.velocity); playerBall.gameObject.SetActive(true); playerBall.transform.position = rb.transform.position; } //defense状態と通常状態の分岐 rb.freezeRotation = false; rb.velocity = Vector3.ClampMagnitude(rb.velocity, 15f); if (ballingFlag) { isWarping = false; rb.drag = Mathf.Lerp(rb.drag, 0f, TimeSpeed); rb.angularDrag = Mathf.Lerp(rb.angularDrag, 0.3f, TimeSpeed); transform.localScale = Vector3.Lerp(transform.localScale, Vector3.one * 0.5f, TimeSpeed); gameObject.layer = LayerMask.NameToLayer("SD"); if (defenseDelay > 0f) { //コックピットと共鳴中だったら、玉になる瞬間に引き寄せられる if (currentPit) { transform.SetPositionAndRotation(Vector3.Lerp(transform.position, currentPit.transform.position + (Vector3.up * 0.5f), Time.deltaTime * 7f), transform.rotation); } rb.useGravity = false; rb.velocity = Vector3.zero; Look(false); dilay = 0.5f; } else { rb.useGravity = true; if (dilay > 0f) { dilay -= Time.deltaTime; dilay = Mathf.Clamp(dilay, 0f, 1f); } else { DefenseMode(); } } } else { //ボールから解除される時,爆発する //if (ballingFlag_prev) //{ // Bom.transform.position = transform.position; // Bom.SetActive(true); // Debug.Log("B!!!"); // //中身がいれば、垂直にジャンプさせる // if(inPlayerFlag_prev) // { // Vector3 vel = rb.velocity; // vel.y = 15f; // playerBall.ballRB.velocity = vel; // } //} rb.drag = Mathf.Lerp(rb.drag, defaultDrag, TimeSpeed); rb.angularDrag = Mathf.Lerp(rb.angularDrag, defaultAngularDrag, TimeSpeed); transform.localScale = Vector3.Lerp(transform.localScale, Vector3.one * 0.5f, TimeSpeed); rb.useGravity = false; DefaultMode(); } prevCollisionFlag = false; PitPoint.UD(); }