10-12-2014, 09:40 PM
Salve a tutti, sto creando un gioco per smartphone ma mi servirebbe teletrasportare l'oggetto dove l'utente clicca... non so veramente come fare e che script scrivere... aiuti?
Valutazione discussione:
Teletrasportare un oggetto su unity 3d?
|
Vector3 arrivo = Camera.main.ScreenToWorldPoint([b]Input.mousePosition[/b]);
arrivo.z = 0; // non serve
gameObject.transform.position = arrivo; //in generale la trasform dell'oggetto che muovi
void Update ()
{
int nrTocchi = Input.touchCount;
if(nrTocchi > 0)
{
for (int i = 0; i < nrTocchi; i++)
{
Touch miotocco = Input.GetTouch(i);
TouchPhase miafase = miotocco.phase;
switch(miafase)
{
case TouchPhase.Began:
print("Nuovo tocco in " + miotocco.position + " , dito nr." + miotocco.fingerId);
break;
case TouchPhase.Moved:
print("dito nr. " + miotocco.fingerId + " mosso di " + miotocco.deltaPosition);
break;
case TouchPhase.Stationary:
print("dito nr. " + miotocco.fingerId + " fermo " + miotocco.position);
break;
case TouchPhase.Ended:
print("dito nr. " + miotocco.fingerId + " uscito in " + miotocco.position);
break;
case TouchPhase.Canceled:
print("dito nr. " + miotocco.fingerId + " finito");
break;
}
}
}
}
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public Vector2 v2muovi = new Vector2(0f,0f);
public float horizontalSpeed = 0.0f;
public float verticalSpeed = 0.0f;
// Use this for initialization
//void Start () {
//
//}
// Update is called once per frame
void Update ()
{
//prendo assi e ottengo il (-1..+1) poi moltiplico per la velocità
float h = horizontalSpeed * Input.GetAxis("Horizontal");
float v = verticalSpeed * Input.GetAxis("Vertical");
//azzero la forza altrimenti diventa un missile
rigidbody2D.velocity=Vector2.zero;
//il mio vettore pari alle
v2muovi.x=h;
v2muovi.y=v;
//applica la forza di vettore 2D (v,h)
rigidbody2D.AddForce(v2muovi);
}
}