原来的代码是这样的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FloatInAir : MonoBehaviour
{
public float amplitude; //Set in Inspector
public float speed; //Set in Inspector
private float tempVal;
private Vector3 tempPos;
void Start ()
{
tempVal = transform.position.y;
}
void Update ()
{
tempPos.y = tempVal + amplitude * Mathf.Sin(speed * Time.time);
transform.position = tempPos;
}
}
但是我想保持原来的位置只是改变Y,所以我试着把transform.position这一行改成了 。
transform.position = new Vector3(transform.position.x, transform.position.y + tempPos, transform.position.z);
但是做加法是错误的。
使用 转变.localPosition 而不是 变换位置.
transform.localPosition将给出相对于父变换的位置。
另外,您还将y位置分配给了 tempPos.y
所以你应该添加 tempPos.y
而不是 tempPos
.