示例#1
0
    private void Update()
    {
        RaycastHit hit;
        Vector3    horizontal  = transform.right * Input.GetAxisRaw("Horizontal");
        Vector3    verticale   = transform.forward * Input.GetAxisRaw("Vertical");
        Vector3    velocity    = (horizontal + verticale).normalized * speed;
        Vector3    rotation    = new Vector3(0, Input.GetAxisRaw("Mouse X"), 0) * mouseXSensitivity;
        float      camRotation = Input.GetAxisRaw("Mouse Y") * mouseYSensitivity;

        // Set Player velocity and rotation in Engine
        if (!freeze)
        {
            pEngine.SetVelocity(velocity);
            pEngine.SetRotation(rotation, camRotation);
        }
        else
        {
            pEngine.SetVelocity(Vector3.zero);
            pEngine.SetRotation(Vector3.zero, 0);
        }

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, 3, mask) && Input.GetKeyDown(KeyCode.E))
        {
            LightController lamp = hit.collider.gameObject.GetComponent <LightController>();
            GameObject      task = GetTaskByName(lamp._task);

            if (task == null || lamp.IsActive() || task.activeInHierarchy)
            {
                return;
            }

            //Prepare user for interface
            freeze         = true;
            Cursor.visible = true;
            Debug.Log("Activate task: " + task.name);
            task.SetActive(true);

            // Wait for finish
            StartCoroutine(WaitComplete(lamp, task));
        }
    }