camera android

Toutes les questions sur le développement Mobile, y compris la partie script.
muska
Messages : 3
Inscription : 21 Avr 2011 15:35

camera android

Message par muska » 24 Juin 2011 18:32

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 :)

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: camera android

Message par giyomuSan » 25 Juin 2011 01:58

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.

muska
Messages : 3
Inscription : 21 Avr 2011 15:35

Re: camera android

Message par muska » 25 Juin 2011 13:25

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 :

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;
	}
}
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.

Avatar de l’utilisateur
kealkeal
Messages : 925
Inscription : 16 Juil 2010 17:31
Localisation : Paris

Re: camera android

Message par kealkeal » 13 Nov 2013 12:22

Je recherche un script pour ma caméra qui fait exactement ce que tu recherches. As tu trouvé une solution qui fonctionne bien ? ;)
kealkeal

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: camera android

Message par Max » 13 Nov 2013 12:37

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.....
;)
Image
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

Répondre

Revenir vers « Développement plateformes mobile Iphone et Android »