- Home /
What is wrong with this code for adjusting the walls and players to match the screen size?
Hey, I'm working on a pong clone from a tutorial series (it's in java while I'm coding in c# so I'm running into more errors trying to translate things) and I've got an error with this code for my game setup, though I'm not sure what it is.
The code is supposed to adjust the size of the wall colliders to the edges of the screen and adjust the position of the player's bars accordingly. (I'll figure out how to scale them later)
The error says:
And when I double click on them it takes me to the last two lines of my code. All of the code is here:
using UnityEngine;
using System.Collections;
public class gameSetup : MonoBehaviour {
public Camera mainCam;
public BoxCollider2D topWall;
public BoxCollider2D bottomWall;
public BoxCollider2D leftWall;
public BoxCollider2D rightWall;
public Transform player01;
public Transform player02;
public float pixFromEdge = 75;
void Start () {
//Move each wall to it's edge location
topWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2f, 0f, 0f)).x, 1f);
topWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3 (0f, Screen.height, 0f)).y + 0.5f);
bottomWall.size = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width * 2f, 0f, 0f)).x, 1f);
bottomWall.center = new Vector2 (0f, mainCam.ScreenToWorldPoint (new Vector3 (0f, 0f, 0f)).y - 0.5f);
leftWall.size = new Vector2 (1f, mainCam.ScreenToWorldPoint (new Vector3 (Screen.height * 2f, 0f, 0f)).y);
leftWall.center = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (0f, 0f, 0f)).x - 0.5f, 0f);
rightWall.size = new Vector2 (1f, mainCam.ScreenToWorldPoint (new Vector3 (Screen.height * 2f, 0f, 0f)).y);
rightWall.center = new Vector2 (mainCam.ScreenToWorldPoint (new Vector3 (Screen.width, 0f, 0f)).x + 0.5f, 0f);
player01.position.x = mainCam.ScreenToWorldPoint (new Vector3 (pixFromEdge, 0f, 0f)).x;
player02.position.x = mainCam.ScreenToWorldPoint (new Vector3 (Screen.width - pixFromEdge, 0f, 0f)).x;
}
}
I don't understand exactly what the error message is talking about.
I'll appreciate any help.
Answer by robertbu · Jun 29, 2014 at 01:50 AM
In C#, you cannot modify individual components of a Transform.position. You must pull 'position' out into a Vector3, modify the Vector3, and then assign the Vector3 back to Transform.position. In Javascript, you can modify individual components. Search for keywords in your error message on Unity Answers, to find many answers and examples.
Thanks a bunch.
Also I noticed my variable pixFromEdge isn't actually effecting the distance from the edge the players are. When I put the values in manually it works.
Your answer
Follow this Question
Related Questions
Error CS0029: Cannot implicitly convert type to UnityEngine.UI.Transform 1 Answer
C# Player Rotation transform error 2 Answers
If gameobject moves do this 1 Answer
How can I have 2 transforms have the same position and rotation 0 Answers
Click GUI Button and move the object to another set location 1 Answer