- Home /
2D Camera Rotation Along Level Boundaries
I'm very unfamiliar with scripting and I started learning Unity a month and a half ago. I'm working on a 2D platformer for my class and I'd love to change my camera angle from a straight side view to a slightly downward looking angle (positive rotation along the Z axis). My class has been using a lot of standard assets and prefab scripts, and for this project we've been using a slightly customized Lerpz platformer demo. I have level boundaries collider that my camera is fixed upon, moving in only the X and Y axes. Since my boundaries inform my camera movement I assume that the most straightforward way to create rotation is to input transform.rotate in the boundaries script. Is this a correct assumption, or is there a better way? And if I should transform.rotate, how would I format it within the code? Would I create a variable function or combine it with function Start
? Here's the complete LevelAttributes/Boundary script:
// Size of the level
var bounds : Rect;
var fallOutBuffer = 5.0;
var colliderThickness = 10.0;
// Sea Green For the Win!
private var sceneViewDisplayColor = Color (0.20, 0.74, 0.27, 0.50);
static private var instance : LevelAttributes;
static function GetInstance() {
if (!instance) {
instance = FindObjectOfType(LevelAttributes);
if (!instance)
Debug.LogError("There needs to be one active LevelAttributes script on a GameObject in your scene.");
}
return instance;
}
function OnDisable () {
instance = null;
}
function OnDrawGizmos () {
Gizmos.color = sceneViewDisplayColor;
var lowerLeft = Vector3 (bounds.xMin, bounds.yMax, 0);
var upperLeft = Vector3 (bounds.xMin, bounds.yMin, 0);
var lowerRight = Vector3 (bounds.xMax, bounds.yMax, 0);
var upperRight = Vector3 (bounds.xMax, bounds.yMin, 0);
Gizmos.DrawLine (lowerLeft, upperLeft);
Gizmos.DrawLine (upperLeft, upperRight);
Gizmos.DrawLine (upperRight, lowerRight);
Gizmos.DrawLine (lowerRight, lowerLeft);
}
function Start () {
createdBoundaries = new GameObject ("Created Boundaries");
createdBoundaries.transform.parent = transform;
leftBoundary = new GameObject ("Left Boundary");
leftBoundary.transform.parent = createdBoundaries.transform;
boxCollider = leftBoundary.AddComponent (BoxCollider);
boxCollider.size = Vector3 (colliderThickness, bounds.height + colliderThickness * 2.0 + fallOutBuffer, colliderThickness);
boxCollider.center = Vector3 (bounds.xMin - colliderThickness * 0.5, bounds.y + bounds.height * 0.5 - fallOutBuffer * 0.5, 0.0);
rightBoundary = new GameObject ("Right Boundary");
rightBoundary.transform.parent = createdBoundaries.transform;
boxCollider = rightBoundary.AddComponent (BoxCollider);
boxCollider.size = Vector3 (colliderThickness, bounds.height + colliderThickness * 2.0 + fallOutBuffer, colliderThickness);
boxCollider.center = Vector3 (bounds.xMax + colliderThickness * 0.5, bounds.y + bounds.height * 0.5 - fallOutBuffer * 0.5, 0.0);
topBoundary = new GameObject ("Top Boundary");
topBoundary.transform.parent = createdBoundaries.transform;
boxCollider = topBoundary.AddComponent (BoxCollider);
boxCollider.size = Vector3 (bounds.width + colliderThickness * 2.0, colliderThickness, colliderThickness);
boxCollider.center = Vector3 (bounds.x + bounds.width * 0.5, bounds.yMax + colliderThickness * 0.5, 0.0);
bottomBoundary = new GameObject ("Bottom Boundary (Including Fallout Buffer)");
bottomBoundary.transform.parent = createdBoundaries.transform;
boxCollider = bottomBoundary.AddComponent (BoxCollider);
boxCollider.size = Vector3 (bounds.width + colliderThickness * 2.0, colliderThickness, colliderThickness);
boxCollider.center = Vector3 (bounds.x + bounds.width * 0.5, bounds.yMin - colliderThickness * 0.5 - fallOutBuffer, 0.0);
}
Answer by BigBlob · Apr 07, 2012 at 06:39 PM
You don't need all this - waste of time.
Use and orthographic camera instead of perspective. It makes the objects that are still 3 Dimensional have no depth at all. Also the downward you're talking about - Change the Y Rotation to 70-90.
Felipe
Your answer
Follow this Question
Related Questions
Move an object toward an angle in 2d space 0 Answers
Keep camera at certain distance from character when rotating 3 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Quaternion Slerp Sanity Check 1 Answer
How do i lock the position of the camera above the player relative to the origin point? 0 Answers