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);
    }
예제 #2
0
    //現在の位置で自動で向きを変える
    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);
    }