Quantcast
Channel: Questions in topic: "build"
Viewing all articles
Browse latest Browse all 4084

My Camera is not working after build for Android.

$
0
0
I've made a Camera script for mobile game that works only in a panel field. The script is working properly on unity Remote 5 but after building the game on my Android, the camera doesn't rotate at all! I have a joystick and some buttons and they work perfectly after the build. The Camera script: using UnityEngine; [AddComponentMenu("Camera/Simple Smooth Mouse Look ")] public class SimpleSmoothMouseLook : MonoBehaviour { Vector2 _mouseAbsolute; Vector2 _smoothMouse; public Vector2 clampInDegrees = new Vector2(360, 180); public bool lockCursor; public bool canWork; public Vector2 sensitivity = new Vector2(2, 2); public Vector2 smoothing = new Vector2(3, 3); public Vector2 targetDirection; public Vector2 targetCharacterDirection; public Touch touch; public float StartXArea; // Assign this if there's a parent object controlling motion, such as a Character Controller. // Yaw rotation will affect this object instead of the camera if set. public GameObject characterBody; void Start() { // Set target direction to the camera's initial orientation. targetDirection = transform.localRotation.eulerAngles; canWork = false; // Set target direction for the character body to its inital state. if (characterBody) targetCharacterDirection = characterBody.transform.localRotation.eulerAngles; } void Update() { // Ensure the cursor is always locked when set if (lockCursor) { Cursor.lockState = CursorLockMode.Locked; } if (canWork) { if (touch.position.x > StartXArea && touch.phase == TouchPhase.Moved) { // Allow the script to clamp based on a desired target value. var targetOrientation = Quaternion.Euler(targetDirection); var targetCharacterOrientation = Quaternion.Euler(targetCharacterDirection); // Get raw mouse input for a cleaner reading on more sensitive mice. var mouseDelta = new Vector2(touch.deltaPosition.x, touch.deltaPosition.y); // Scale input against the sensitivity setting and multiply that against the smoothing value. mouseDelta = Vector2.Scale(mouseDelta, new Vector2(sensitivity.x * smoothing.x, sensitivity.y * smoothing.y)); // Interpolate mouse movement over time to apply smoothing delta. _smoothMouse.x = Mathf.Lerp(_smoothMouse.x, mouseDelta.x, 1f / smoothing.x); _smoothMouse.y = Mathf.Lerp(_smoothMouse.y, mouseDelta.y, 1f / smoothing.y); // Find the absolute mouse movement value from point zero. _mouseAbsolute += _smoothMouse; // Clamp and apply the local x value first, so as not to be affected by world transforms. if (clampInDegrees.x < 360) _mouseAbsolute.x = Mathf.Clamp(_mouseAbsolute.x, -clampInDegrees.x * 0.5f, clampInDegrees.x * 0.5f); // Then clamp and apply the global y value. if (clampInDegrees.y < 360) _mouseAbsolute.y = Mathf.Clamp(_mouseAbsolute.y, -clampInDegrees.y * 0.5f, clampInDegrees.y * 0.5f); transform.localRotation = Quaternion.AngleAxis(-_mouseAbsolute.y, targetOrientation * Vector3.right) * targetOrientation; // If there's a character body that acts as a parent to the camera if (characterBody) { var yRotation = Quaternion.AngleAxis(_mouseAbsolute.x, Vector3.up); characterBody.transform.localRotation = yRotation * targetCharacterOrientation; } else { var yRotation = Quaternion.AngleAxis(_mouseAbsolute.x, transform.InverseTransformDirection(Vector3.up)); transform.localRotation *= yRotation; } } } } } The Panel script (For info, there are three panels): using System.Collections; using System.Collections.Generic; using UnityEngine; public class fieldTouch : MonoBehaviour { public GameObject cam; public GameObject Panel; public GameObject PanelTwo; public GameObject PanelThree; public int i; public Touch touch; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { SimpleSmoothMouseLook Script = cam.GetComponent(); i = 0; while (i < Input.touchCount) { touch = Input.GetTouch(i); if (RectTransformUtility.RectangleContainsScreenPoint(Panel.GetComponent(), touch.position, null) || RectTransformUtility.RectangleContainsScreenPoint(PanelTwo.GetComponent(), touch.position, null) || RectTransformUtility.RectangleContainsScreenPoint(PanelThree.GetComponent(), touch.position, null)) { Script.canWork = true; Script.touch = Input.GetTouch(i); } else if (RectTransformUtility.RectangleContainsScreenPoint(Panel.GetComponent(), Script.touch.position, null) || RectTransformUtility.RectangleContainsScreenPoint(PanelTwo.GetComponent(), Script.touch.position, null) || RectTransformUtility.RectangleContainsScreenPoint(PanelThree.GetComponent(), Script.touch.position, null)) { Script.canWork = true; } else { Script.canWork = false; } ++i; } } } So here is my question: Is there a problem in my scripts? Does `RectTransformUtility.RectangleContainsScreenPoint` work after the Android build? Or is this a problem in the player settings? I'll really appreciate some help, Thanks!

Viewing all articles
Browse latest Browse all 4084

Trending Articles