Hello,
I’m new to unity script, and I’m facing one problem. I like to add force to my character. AddRelativeForce works fine, but when I face up direction the force create a vector up and the character go up. It’s not the goal.
If you can help me I’ll apreciate (the objective is skydive control to mobile game)
var turnSpeed : float = 10.0; var maxTurnLean : float = 50.0; var maxTilt : float = 50.0; var sensitivity : float = 10.0; var forwardForce : float = 800.0; var guiSpeedElement : Transform; private var normalizedSpeed : float = 0.6; private var euler : Vector3 = Vector3.zero; var horizontalOrientation : boolean = true; function Awake () { if (horizontalOrientation) { iPhoneSettings.screenOrientation = iPhoneScreenOrientation.LandscapeLeft; } else { iPhoneSettings.screenOrientation = iPhoneScreenOrientation.Portrait; } guiSpeedElement.position = new Vector3 (0, normalizedSpeed, 0); } function Update () { for (var evt : Touch in Input.touches) { if (evt.phase == TouchPhase.Moved) { // normalizedSpeed = evt.position.y / Screen.height; // guiSpeedElement.position = new Vector3 (0, normalizedSpeed, 0); } } } function FixedUpdate () { var accelerator : Vector3 = Input.acceleration; if (horizontalOrientation) { var t : float = accelerator.x; accelerator.x = -accelerator.y; accelerator.y = t; //print(t); } if (t < 0) //se cabrando anda menos horizontalmente { if(t <= -0.6) { //limita a cabrada t = -0.6; rigidbody.AddRelativeForce(0, 0, (normalizedSpeed*1.5) * forwardForce); rigidbody.AddForce(transform.up * (t *-1.5)); print('cabrando: ' + t); } } else { rigidbody.AddRelativeForce(0, 0, (normalizedSpeed*2.5) * forwardForce); rigidbody.AddForce(transform.up * (t * -1.5)); print('picando: ' + t); } //print(normalizedSpeed * forwardForce * t); // Rotate turn based on acceleration euler.y += accelerator.x * turnSpeed; // Since we set absolute lean position, do some extra smoothing on it euler.z = Mathf.Lerp(euler.z, -accelerator.x * maxTurnLean, 0.2); // Since we set absolute lean position, do some extra smoothing on it euler.x = Mathf.Lerp(euler.x, accelerator.y * maxTilt, 0.2); // Apply rotation and apply some smoothing var rot : Quaternion = Quaternion.Euler(euler); transform.rotation = Quaternion.Lerp (transform.rotation, rot, sensitivity); rigidbody.AddForce(transform.forward * normalizedSpeed * 1000); }