- Home /
Mathf clamp movement to Camera space in js
Hello guys of the internets! :D
I have a little trouble creating bounderies for my movement. I created a 2 D Space Shooter, well 2,5D but i dont want it to go in the z direction, in javascript using a tutorial.
Now i have the problem that it seems to be impossible to restrict the player from leaving the camera viewport. The only soulution that works is for the lower part in which i have an Hazard which kills the player. All other reagions are passable even though i have invisible boxes there with rigid bodys and box colliders.
This is the simple player movement script:
var playerSpeed : float;
function Update ()
{
transform.Translate(Input.GetAxisRaw("Horizontal") * Time.deltaTime * playerSpeed, 0, Input.GetAxisRaw("Vertical")* Time.deltaTime * playerSpeed );
//transform.position.x = Mathf.Clamp(transform.position.x, -8, -1.55);
//transform.position.y = Mathf.Clamp(transform.position.y, 0.2, 4.8);
}
Every time i hit one of the boxes i just fly through. Its so frustrating.
Is it somehow possible to hardcode the mathfclamp, which worked btw, as long as the camera isnt moving, to restrict the movement to the viewport of the camera rather then world space.
Any help will be greatly appreciated. thanks
:D
Answer by Ardonix · Aug 20, 2012 at 04:11 PM
I now changed the way i move.
" if(Input.GetKey(KeyCode.RightArrow)) // Move the object to the right relative to the camera 1 unit/second. transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);
else if(Input.GetKey(KeyCode.LeftArrow)) // Move the object to the left relative to the camera 1 unit/second. transform.Translate(Vector3.left * Time.deltaTime, Camera.main.transform);
else if(Input.GetKey(KeyCode.UpArrow)) // Move the object to the up relativ to the camera 1 unit/second. transform.Translate(Vector3.up * Time.deltaTime, Camera.main.transform);
else if(Input.GetKey(KeyCode.DownArrow)) // Move the object to the down relative to the camera 1 unit/second. transform.Translate(Vector3.down * Time.deltaTime, Camera.main.transform);
"
Isnt there a possibility to clamp the movement somehow along the same camrea transform?
PS: With my new code i aint able to move in 2 directions at a time i.e. left and up. Pretty stupid from me right? ^^