这是我得到的错误:
Assets / Scripts / CameraScript.cs(60,39):错误CS1612:无法修改`UnityEngine.Transform.position'的值类型返回值。考虑将值存储在临时变量
中
这是我的代码:
void Start (){
thisTransform = transform;
// Disable screen dimming
Screen.sleepTimeout = 0;
}
void Update (){
//Reset playerscore
playerScore = settings.playerScore;
//Smooth follow player character
if (target.position.y > thisTransform.position.y) {
thisTransform.position.y = Mathf.SmoothDamp( thisTransform.position.y,
target.position.y, ref velocity.y, smoothTime);
}
}
答案 0 :(得分:2)
您无法单独设置thisTransform.position.y
值。改为设置thisTransform.position
。
例如:
if (target.position.y > thisTransform.position.y) {
thisTransform.position = new Vector3(thisTransform.position.x,
Mathf.SmoothDamp( thisTransform.position.y, target.position.y, ref velocity.y, smoothTime),
thisTransform.position.z);
}
答案 1 :(得分:2)
Transform.position.y
在C#中是只读的,因此为了修改它,您需要先将Transform.position
的值存储到临时变量,更改该变量的值,然后将其分配回Transform.position
:
Vector3 temp = thisTransform.position;
temp.y = Mathf.SmoothDamp( temp.y, target.position.y, ref velocity.y, smoothTime);
thisTransform.position = temp;