public override Vector3 ActivateCameraObserver(ref bool notUseCameraLookAt, ref Vector3 lookAtPosition) { Vector3 lookVec = status.GetFootCenter().position - status.GetPlayer().position; if (!status.GetIsInMotion()) { lookVec.y = 0; } lookVec += Camera.main.transform.position; notUseCameraLookAt = true; lookAtPosition = lookVec; float nowAngle = Camera.main.transform.rotation.eulerAngles.y; Vector3 position; position.z = distanceFromCenter * Mathf.Cos(nowAngle * Mathf.Deg2Rad); position.x = distanceFromCenter * Mathf.Sin(nowAngle * Mathf.Deg2Rad); if (!status.GetIsInMotion()) { position.y = height; } else { position.y = status.GetPlayer().position.y + height; } return(status.GetFootCenter().position + position); }
//現在の位置で自動で向きを変える private void SetLookAt(Vector3[] lookAtPos) { Vector3[] vecfromCenter = new Vector3[4]; Transform[] foot = status.GetFoots(); for (int i = 0; i < vecfromCenter.Length; i++) { vecfromCenter[i] = status.GetFoots()[i].position - status.GetFootCenter().position; vecfromCenter[i].y = 0; lookAtPos[i] = foot[i].position + vecfromCenter[i]; } Vector3 toPlayerFromCenter = status.GetPlayer().position - status.GetFootCenter().position; toPlayerFromCenter.y = 0; status.GetBody().rotation = Quaternion.Lerp(status.GetBody().rotation, status.GetFootCenter().rotation, Time.fixedDeltaTime); }