|
I am building a tilt type game based on the Roller Ball tutorial. I have a camera which "smooth" follows the ball. My problem is tilting of the phone is linked to the stage not the camera. If the camera rotates 180 around the ball the tilt controls are opposite, tilt left and the ball moves to the right. The tilt doesn't update with the camera. This makes control of the ball imposable. How can I have the tilting linked to the camera view and not the scene. Here is the code
Thanks
(comments are locked)
|
|
Try to transform the input direction relative to the camera:
Alternatively if you want to ignore any height slope:
Thanks, perfect.
Apr 05 '11 at 06:44 AM
Richard 3
(comments are locked)
|
|
So you have ported the tilting over to the unity scene? Then you're halfway there. Right now your tilt is registered in World coordinates ( the coordinates relative to (0,0,0) of your scene). I assume you know what is causing your problem so yo need to know how the phone is tilted relative to the camera. That means you need to convert the tilt of the phone from being relative to the scene to being relative to your camera ( local coordinates). This might seem complex but it's actually pretty easy to implement. First, get yourself the transform component of your camera. get the transform's WorldToLocal Matrix. ( no worries, you don't need to understand how it works ). Then multiply your tilt VECTOR with the matrix. You'll end up with something like this.
localtilt will now contain a tilt value that is relative to your camera position & angle. Hope this helps! Thanks for this, but I am getting an error on these lines: "Assets/Scripts/Controller2.js(30,18): UCE0001: ';' expected. Insert a semicolon at the end. on these two lines: Matrix4x4 worldToLocal = cameraTransform.worldToLocalMatrix; and Vector3 localTilt = worldToLocal.MultiplyVector(dir); Richard 0 secs ago
Mar 23 '11 at 09:35 AM
Richard 3
That's because it is C# code McBuff posted.
Apr 04 '11 at 01:14 PM
Statement ♦♦
(comments are locked)
|
