代码错误 "Argument 1: cannot convert from 'UnityEngine.Transform' to 'UnityEngine.Quaternion'"
Error in code saying "Argument 1: cannot convert from 'UnityEngine.Transform' to 'UnityEngine.Quaternion'"
我正在学习 Unity 中类似“黑暗之魂”游戏的教程,但遇到错误:
Assets\PlayerLocomotion.cs(76,58): error CS1503: Argument 1: cannot convert from 'UnityEngine.Transform' to 'UnityEngine.Quaternion'.
这是我的代码:
private void HandleRotation(float delta)
{
Vector3 targetDir = Vector3.zero;
float moveOverride = inputHandler.moveAmount;
targetDir = cameraObject.forward * inputHandler.vertical;
targetDir += cameraObject.right * inputHandler.horizontal;
targetDir.Normalize();
targetDir.y = 0;
if (targetDir == Vector3.zero)
targetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(targetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform, tr, rs * delta);
myTransform.rotation = targetRotation;
}
那是因为 Quaternion.Slerp takes in a Quaternion 作为重载(在第一个参数中),但您正在传递一个转换。我猜您想使用 myTransform.rotation
而不是 myTransform
本身。
我正在学习 Unity 中类似“黑暗之魂”游戏的教程,但遇到错误:
Assets\PlayerLocomotion.cs(76,58): error CS1503: Argument 1: cannot convert from 'UnityEngine.Transform' to 'UnityEngine.Quaternion'.
这是我的代码:
private void HandleRotation(float delta)
{
Vector3 targetDir = Vector3.zero;
float moveOverride = inputHandler.moveAmount;
targetDir = cameraObject.forward * inputHandler.vertical;
targetDir += cameraObject.right * inputHandler.horizontal;
targetDir.Normalize();
targetDir.y = 0;
if (targetDir == Vector3.zero)
targetDir = myTransform.forward;
float rs = rotationSpeed;
Quaternion tr = Quaternion.LookRotation(targetDir);
Quaternion targetRotation = Quaternion.Slerp(myTransform, tr, rs * delta);
myTransform.rotation = targetRotation;
}
那是因为 Quaternion.Slerp takes in a Quaternion 作为重载(在第一个参数中),但您正在传递一个转换。我猜您想使用 myTransform.rotation
而不是 myTransform
本身。