コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        // Origin point for projecting the linecast for each direction
        playerPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        // Where to look in each direction
        if (inputState.direction == Directions.Right)
        {
            lookRight = new Vector3(RightLimit.transform.position.x, RightLimit.transform.position.y, RightLimit.transform.position.z);
            lookLeft  = new Vector3(LeftLimit.transform.position.x, LeftLimit.transform.position.y, LeftLimit.transform.position.z);
        }
        else
        {
            lookLeft  = new Vector3(RightLimit.transform.position.x, RightLimit.transform.position.y, RightLimit.transform.position.z);
            lookRight = new Vector3(LeftLimit.transform.position.x, LeftLimit.transform.position.y, LeftLimit.transform.position.z);
        }
        lookUp   = new Vector3(UpLimit.transform.position.x, UpLimit.transform.position.y, UpLimit.transform.position.z);
        lookDown = new Vector3(DownLimit.transform.position.x, DownLimit.transform.position.y, DownLimit.transform.position.z);

        // Linecast for each direction to determine distance between player and level boundaries
        var rightLine = Physics2D.Linecast(playerPosition, lookRight, whatToDetect);
        var leftLine  = Physics2D.Linecast(playerPosition, lookLeft, whatToDetect);
        var upLine    = Physics2D.Linecast(playerPosition, lookUp, whatToDetect);
        var downLine  = Physics2D.Linecast(playerPosition, lookDown, whatToDetect);

        // Let the camera know the collision state for bounds
        followPlayer.DidReachBounds(rightLine, 1, rightLine.point);
        followPlayer.DidReachBounds(leftLine, 2, leftLine.point);
        followPlayer.DidReachBounds(upLine, 3, upLine.point);
        followPlayer.DidReachBounds(downLine, 4, downLine.point);
    }