コード例 #1
0
    public void handleTrigger(TrackChangeTrigger trigger)
    {
        rotationAmountRemaining = trigger.rotationAmount;
        rotationCenter          = trigger.getRotationCenter(transform.position);
        rotationAxis            = trigger.rotationAxis;

        rotationSpeed = Mathf.Sign(rotationAmountRemaining) * (movSpeed * 360) / (2 * Mathf.PI * Vector3.Distance(transform.position, rotationCenter));
    }
コード例 #2
0
    public void handleTriggerUpdatesRotationAxis()
    {
        GameObject       camera           = new GameObject();
        CameraController cameraController = camera.AddComponent <CameraController>();

        GameObject         triggerObject      = new GameObject();
        TrackChangeTrigger trackChangeTrigger = triggerObject.AddComponent <TrackChangeTrigger>();

        Vector3 oldRotationAxis = cameraController.rotationAxis;

        cameraController.handleTrigger(trackChangeTrigger);

        Assert.AreNotEqual(oldRotationAxis, cameraController.rotationAxis);
    }
コード例 #3
0
    public void handleTriggerUpdatesRotationAmountRemaining()
    {
        GameObject       camera           = new GameObject();
        CameraController cameraController = camera.AddComponent <CameraController>();

        GameObject         triggerObject      = new GameObject();
        TrackChangeTrigger trackChangeTrigger = triggerObject.AddComponent <TrackChangeTrigger>();

        float oldRotationAmount = cameraController.rotationAmountRemaining;

        cameraController.handleTrigger(trackChangeTrigger);

        Assert.AreNotEqual(oldRotationAmount, cameraController.rotationAmountRemaining);
    }
コード例 #4
0
    void OnTriggerEnter(Collider other)
    {
        // If we hit a track change, we want to queue a rotation
        if (other.CompareTag("TrackChange"))
        {
            // Here we get the component and check if it actually has it before getting data from it
            TrackChangeTrigger trigger = other.GetComponent <TrackChangeTrigger>();

            if (trigger != null)
            {
                handleTrigger(trigger);
            }
        }
    }
コード例 #5
0
    public void handleTriggerUpdatesRotationSpeedProperly()
    {
        GameObject       camera           = new GameObject();
        CameraController cameraController = camera.AddComponent <CameraController>();

        GameObject         triggerObject      = new GameObject();
        TrackChangeTrigger trackChangeTrigger = triggerObject.AddComponent <TrackChangeTrigger>();

        camera.transform.position = new Vector3(10f, 0f, 0f);

        float expectedRotationSpeed = 11.4591559026164f;

        cameraController.handleTrigger(trackChangeTrigger);

        Assert.IsTrue(Mathf.Approximately(expectedRotationSpeed, cameraController.rotationSpeed));
    }
コード例 #6
0
    public void handleTriggerUpdatesRotationCenter()
    {
        GameObject       camera           = new GameObject();
        CameraController cameraController = camera.AddComponent <CameraController>();

        GameObject         triggerObject      = new GameObject();
        TrackChangeTrigger trackChangeTrigger = triggerObject.AddComponent <TrackChangeTrigger>();

        camera.transform.position = new Vector3(100, 100, 100);

        Vector3 oldRotationCenter = cameraController.rotationCenter;

        cameraController.handleTrigger(trackChangeTrigger);

        Assert.AreNotEqual(oldRotationCenter, cameraController.rotationCenter);
    }
コード例 #7
0
    public void getRotationCenterReturnsCorrectlyFor90Degrees()
    {
        GameObject         triggerObject = new GameObject();
        TrackChangeTrigger trigger       = triggerObject.AddComponent <TrackChangeTrigger>();

        trigger.rotationAmount     = 90.0f;
        trigger.transform.position = Vector3.zero;

        Vector3 inPosition = new Vector3(10f, 0f, 0f);

        Vector3 expectedCenter = new Vector3(10f, 0f, 10f);

        Vector3 rotationCenter = trigger.getRotationCenter(inPosition);

        Assert.Greater(0.001f, Vector3.Distance(expectedCenter, rotationCenter));
    }