3ds max -> Unity -> iOS
Ho preparato questa piccola guida per tutti quelli che vorrebbero provare un modello 3d creato con 3ds max, all'interno di unity e di conseguenza nel proprio iPhone.
> Articolo d'archivio del 2017, dal vecchio nutellino.it: comandi e versioni potrebbero non essere più attuali.

Ciao a tutti!
Ho preparato questa piccola guida per tutti quelli che vorrebbero provare un modello 3d creato con 3ds max, all'interno di unity e di conseguenza nel proprio iPhone.
Requisiti:
- Avere un computer windows con 3ds max installato
- Avere un Mac per poter utilizzare Xcode
- Avere un iPhone (meglio se dal 6 in su)
3ds max
Partiamo dall'esempio di un modello creato con 3ds max 2018, per prima cosa bisognerà esportare il progetto in formato FBX.
Con il nostro progetto aperto in 3ds max, seguiamo i seguenti passaggi


Dopodiché avendo l'fbx salvato in una cartella accessibile da Mac, passiamo ad aprire Unity con un progetto demo
Unity
Apriamo per semplicità, Roll a Ball

Ci posizioniamo sul progetto completo di questo tutorial

E importiamo l'asset appena creato, l'FBX


Ci troveremo ad avere il nostro bellissimo cubo importato all'interno di Unity

Quindi, lo trasciniamo all'interno della scena


Esportazione in Xcode
A questo punto, possiamo procedere ad esportare il nostro gioco in Xcode
Aprire il menu e fare Build & run

A questo punto aggiungere la scena aperta in unity con il tasto Add Open scenes

Saremo nella situazione seguente:

Ora possiamo premere Build and Run, selezionare quindi una cartella di output del progetto Xcode, per semplicità salviamolo nel desktop

Arrivati a questo punto, bisognerà aggiustare delle impostazioni in Xcode
Una volta aperto Xcode, selezionare il progetto

E modificare le impostazioni di Identity, (inventiamo un bundle identifier)

E selezioniamo un Team, (basterà essere loggati in Xcode con il proprio apple id)


Deploy su iOS
Collegare il proprio iphone al Mac, una volta fatto, si avrà la possibilità di inserire l'applicazione all'interno del cellulare, basterà premere "play"

Attendere che la procedura sia completata
Una volta fatto, avremo nel nostro iphone una fiammante applicazione nuova, che non vorrà aprirsi.

Dovremo andare in impostazioni e accettare il certificato di developer (che siamo noi)
Una volta fatto, finalmente, l'applicazione si avvierà!
E come potete vedere, ecco il nostro modellino inserito all'interno!
😊
Come rendere il gioco Roll a ball interattivo con il touchscreen
Bene, ora il gioco è caricato, ma non ci si riesce a giocare.
Bisogna modificare uno script, e bloccare la rotazione in landscape
Aprire il file PlayerController

E sostituire il codice con il seguente:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour {
public float speed;
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
//game world plane
private Plane plane;
void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
winText.text = "";
SetCountText();
//Create our game world plane
//Our plane will pass through (0, 0, 0) in our game world and face up
plane = new Plane(Vector3.up, Vector3.zero);
}
void FixedUpdate()
{
//keyboard inputs
// float move_horizontal = Input.GetAxis("Horizontal");
// float move_vertical = Input.GetAxis("Vertical");
//check that we have at least 1 touch on screen
if(Input.touchCount > 0)
{
//grab the first touch
Touch myTouch = Input.GetTouch(0);
//create a ray from that touch position through the camera plane
var ray = Camera.main.ScreenPointToRay(myTouch.position);
float ent;
//check if our ray will intersect the game world plane
//if yes, return true, set ent to the DISTANCE at which the ray intersects the plane
//if no, return false, ent is zero
if (plane.Raycast(ray, out ent))
{
//Get the point on the ray at distance 'ent'
var hitPoint = ray.GetPoint(ent);
//Add force to our rigidbody from it's position to the touch point
//magnitude is set to 1 with 'normalized' to keep the speed multiplier consistent
rb.AddForce((hitPoint - rb.position).normalized * speed);
}
}
//keyboard input AddForce
// rb.AddForce(movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count++;
SetCountText();
}
}
void SetCountText()
{
countText.text = "Count: " + count.ToString();
if (count >= 8)
winText.text = "YOU WON!";
}
}Modifichiamo poi l'impostazione del progetto bloccando la rotazione a Landscape:


Possiamo quindi rifare la procedura di Build & Run descritta sopra!
$ cat ~/archivio/un-modello-3d-da-3ds-max-a-unity-deploy-su-ios.md
WARNING: questo file è del 2017.
L'ho scritto io, ma un io di qualche anno fa: potrebbe non rispecchiare più quello che penso né quello che so fare.
Continuare? [s/N]