我想知道玩家目前的角度是什么。我用谷歌搜索并让它工作
turn = fAntToCamRotate;
curDir = (curDir + turn) % 360; // rotate angle modulo 360 according to input
RaycastHit hit;
if (Physics.Raycast(target.transform.position, -curNormal, out hit))
{
curNormal = Vector3.Lerp(curNormal, hit.normal, 4 * Time.deltaTime);
Quaternion grndTilt = Quaternion.FromToRotation(Vector3.up, curNormal);
//GetComponent<CapsuleCollider>().transform.rotation = grndTilt * Quaternion.Euler(0, curDir, 0);
target.transform.rotation = grndTilt * Quaternion.Euler(0, curDir, 0);
/*
* FIX THIS CODE TO KNOW THE ANGEL THE PLAYER IS WALKING ON!!!
Vector3 test = Vector3.up;
Vector3 test2 = hit.normal;
float tester = Vector3.Dot(test.normalized, test2.normalized);
Debug.Log(tester * (180 / Mathf.PI));
*/
}
使用此代码,玩家可以跟随地面,因此在沿着斜坡跑步时,它们看起来不再是小距离跳跃。但是,我有两个问题,我希望有人可以帮助我。
对于我的第二个问题,我想我可以在玩了更多的东西后自己解决。但是,如果有人能帮助我解决第一个问题我会喜欢这个问题,我已经尝试了好几个小时没有运气,我不知道为什么这个角度给了我如此奇怪的数字。
答案 0 :(得分:1)
计算角度是简单的三角函数。
使用:
angle = arctan (y/x)
您可以使用Unity中的Math.f来帮助您,它不像.Net Math那样返回浮动而不是双重。
Radians to degree
Angle * 180/pi