Menu
CoddyTech

升起旗帜

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 32 课,共 85 课。

localPosition 可以像 position 一样在每一帧读取和修改。需要沿着父对象向上移动的子对象,比如沿塔向上移动的舱室或沿桅杆向上移动的旗帜,会沿 localPosition 移动,并将自身的局部高度与顶部进行比较,因此无论父对象位于何处都能正常工作:

if (transform.localPosition.y < 10)
{
    transform.localPosition += new Vector3(0, 2 * Time.deltaTime, 0);
}

如果改为与 position.y 比较,那么父对象位置升高或降低时,顶部也会随之移动。

challenge icon

挑战

中等

用向上箭头把旗帜升到旗杆顶端。

  1. 在 Update() 中,写入 if (Input.GetKey(KeyCode.UpArrow) && transform.localPosition.y < 4)。
  2. 在其中,将 new Vector3(0, climb * Time.deltaTime, 0) 加到 transform.localPosition 上。

按下 Play 并按住向上箭头:旗帜会升到旗杆顶端并停下。然后点击 Check。

亲手试试

using UnityEngine;

public class Hoist : MonoBehaviour
{
    public float climb = 1f;

    void Start()
    {
        transform.localPosition = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // 按住向上箭头键时,持续爬升,直到与 Ship 的高度差达到 4。
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器