Bonjour,
Je cherche un script de camera du genre mouse orbit, mais adapté a un export sur android, celui de base ne semble pas fonctionner, des que leve le doigt sur l'ecran et que je le repositionne pour pivoter un peu plus la camera, elle se remet dans sa position de depart, ce qui est assez genant.
De plus le zoom n'est pas pris en compte, et je voudrai pouvoir le faire comme avec une photo, en ecartant 2 doigts sur l'ecran.
merci d'avance
camera android
Re: camera android
ton prob de cam c pas lie a android masi au script en lui meme je pense.
sinon tu peu aller chercher des tutos ou code de ref pour iphone car la classe Input d unity relatif au iphone fonctionne de la meme maniere ( selon les capacite du droid ).
ensuite les seules chose rajouter ce sont la gestion des bouton de l android, car selon les cas il y en a pas mal.
va chercher le tuto de penelope pour iphone, tu aura tout un tas de code pour camera et pinch ( ton zoom ).
il y a aussi des les package livre avec unity des prefab deja pour de la gestion camera control pour iphone qui translate facilement sur android.
sinon tu peu aller chercher des tutos ou code de ref pour iphone car la classe Input d unity relatif au iphone fonctionne de la meme maniere ( selon les capacite du droid ).
ensuite les seules chose rajouter ce sont la gestion des bouton de l android, car selon les cas il y en a pas mal.
va chercher le tuto de penelope pour iphone, tu aura tout un tas de code pour camera et pinch ( ton zoom ).
il y a aussi des les package livre avec unity des prefab deja pour de la gestion camera control pour iphone qui translate facilement sur android.
Re: camera android
Merci pour la reponse.
J'ai fini par trouver dans le tuto "Head Look Controller" dans l'asset store un script de camera qui semblait convenir. Je l'ai testé sur un HTC, la manipulation du fichier est juste chaotique..
Je comprends pas pourquoi mon premier script ( celui de base dans unity : '"mouse orbit" ) propose une navigation qui semble etre exactement ce dont j'ai besoin ( sauf le zoom ), mais reinitialise la camera sur sont point de vue d'origine des qu'on retouche l'ecran.
Voila les 2 scripts:
-Le premier, qui fonctionne bien tant qu'on relache pas la pression ou qu'on ne retouche pas l'ecran, ce qui est impossible si on veut effectuer une rotation complete de l'objet. Ce probleme n'apparait pas quand on utilise le script pour un export web et une manipulation a la souris :
-Le second script, qui semble adapté aux ecrans tactiles, mais qui propose un mode de visualisation absolument pas exploitable :
Si quelqu'un a une idee ( ou un script ) pour m'aider ca serait sympa, sachant que pour resumer, je voudrai pouvoir tourner autour d'un objet 3D en utilisant un terminal tactile sur android et eventuellement zoomer, meme si je doute de plus en plus de la viabilité d'un zoom classique (ecartage de doigts ) sur un fichier comme celui la.
J'ai fini par trouver dans le tuto "Head Look Controller" dans l'asset store un script de camera qui semblait convenir. Je l'ai testé sur un HTC, la manipulation du fichier est juste chaotique..
Je comprends pas pourquoi mon premier script ( celui de base dans unity : '"mouse orbit" ) propose une navigation qui semble etre exactement ce dont j'ai besoin ( sauf le zoom ), mais reinitialise la camera sur sont point de vue d'origine des qu'on retouche l'ecran.
Voila les 2 scripts:
-Le premier, qui fonctionne bien tant qu'on relache pas la pression ou qu'on ne retouche pas l'ecran, ce qui est impossible si on veut effectuer une rotation complete de l'objet. Ce probleme n'apparait pas quand on utilise le script pour un export web et une manipulation a la souris :
Code : Tout sélectionner
var target : Transform;
var distance = 50.0;
var zoomRate = 20;
var xSpeed = 100.0;
var ySpeed = 80.0;
var yMinLimit = 1;
var yMaxLimit = 100;
private var x = 0.0;
private var y = 0.0;
@script AddComponentMenu("Camera-Control/Mouse Orbit")
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
function LateUpdate () {
if (target) {
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
y = ClampAngle(y, yMinLimit, yMaxLimit);
distance += -(Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime) * zoomRate * Mathf.Abs(distance);
if (distance < 15)
{
distance = 15;
}
if (distance > 35)
{
distance = 35;
}
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
-Le second script, qui semble adapté aux ecrans tactiles, mais qui propose un mode de visualisation absolument pas exploitable :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class OrbitCamera : MonoBehaviour {
public Transform target;
public Transform cam;
public Vector3 offset = Vector3.zero;
private float cameraRotSide;
private float cameraRotUp;
private float cameraRotSideCur;
private float cameraRotUpCur;
private float distance;
void Start () {
cameraRotSide = transform.eulerAngles.y;
cameraRotSideCur = transform.eulerAngles.y;
cameraRotUp = transform.eulerAngles.x;
cameraRotUpCur = transform.eulerAngles.x;
distance = -cam.localPosition.z;
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0)) {
cameraRotSide += Input.GetAxis("Mouse X")*5;
cameraRotUp -= Input.GetAxis("Mouse Y")*5;
}
cameraRotSideCur = Mathf.LerpAngle(cameraRotSideCur, cameraRotSide, Time.deltaTime*5);
cameraRotUpCur = Mathf.Lerp(cameraRotUpCur, cameraRotUp, Time.deltaTime*5);
if (Input.GetMouseButton(1)) {
distance *= (1-0.1f*Input.GetAxis("Mouse Y"));
}
distance *= (1-1*Input.GetAxis("Mouse ScrollWheel"));
Vector3 targetPoint = target.position;
transform.position = Vector3.Lerp(transform.position, targetPoint + offset, Time.deltaTime);
transform.rotation = Quaternion.Euler(cameraRotUpCur, cameraRotSideCur, 0);
float dist = Mathf.Lerp(-cam.transform.localPosition.z, distance, Time.deltaTime*5);
cam.localPosition = -Vector3.forward * dist;
}
}
Re: camera android
Je recherche un script pour ma caméra qui fait exactement ce que tu recherches. As tu trouvé une solution qui fonctionne bien ?
kealkeal
Re: camera android
j'espère que tu auras une réponse, mais j'espère aussi que tu as conscience que c'est quelqu'un qui ne c'est pas connecté au forum depuis plus d'un an et demi, donc.....
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ