videogames development

Unity3D Game Engine – Combination of Keys Pressed – Javascript

Unity3D Game Engine – Combination of Keys Pressed – Javascript

KeyCombinationCheck.js


#pragma strict
 
function Update()
{

if((Input.GetKey("e"))&&(Input.GetKeyDown("1"))) {
print("You have pressed e+1");
}

}

By |Unity3D, Video Games Development|Commenti disabilitati su Unity3D Game Engine – Combination of Keys Pressed – Javascript

Unity 3D – AAA Sound Manager – JavaScript

Unity 3D – AAA Sound Manager – JavaScript

Best practices for playing a lot of audio.

Create a Unity 3D Project with:

1. Main Camera

2. Cube, attach the script ‘GetAudioCenter.js’:


#pragma strict

// private to hide in inspector: nome dello script da prelevare
private var audioCenter : AudioCenterScript;

function Start () {
    // inserisco in una variabile l'oggetto con tag AudioCenter
    var audioCenterObject : GameObject = GameObject.FindWithTag ("AudioCenter");
    // se l'oggetto con tag GameController esiste lo inserisco in una variabile
    if (audioCenterObject != null)
    {
        audioCenter = audioCenterObject.GetComponent (AudioCenterScript);
    }
    // se l'oggetto con tag GameController non esiste restituisce un messaggio di errore
    if (audioCenterObject == null)
    {
        Debug.Log ("Cannot find 'AudioCenterScript' script");
    }
}

function Update () {
}


function OnMouseDown ()
{
        // When you click over the object
        Debug.Log('clicked'); // Debug Code, remove in the end
        // invia a AudioCenterScript.js, alla funzione play sound il suono da utilizzare
        var trackValue : int = 1;
        audioCenter.PlayTrack (trackValue);
}

3. Empty Object> Inspector:

a. name it ‘AudioCenter’
b. tag it ‘AudioCenter’
c. Transform> Reset, it puts the object at 0,0,0
d. Add Component> Audio Souce> uncheck ‘Play On Awake’ -> VERY IMPORTANT
e. attach the script ‘AudioCenterScript.js’:


#pragma strict

// assign the audio clips into Inspector START ###########
// NOTICE: the best practice is to use understandable names
// IMPORTANT: you can organize your audio clips into separate AudioCenter, example: dance, classic etc...
var bigJump: AudioClip;        // track 1
var smallJump: AudioClip;      // track 2
var miniJump: AudioClip;       // track 3
var outWaterJump: AudioClip;   // track 4
// assign the audio clips into Inspector END #############

function Start () {

}

function Update () {

}

function PlayTrack (trackValue : int) {
if (trackValue == 1)
    {
        // play the track 1, volume 0-1
        // here you can setup via code volume of the track or SFX
        audio.PlayOneShot(bigJump, 1);
    }
    // if (trackValue == 2) -> it will play track 2 and so on...
}

Inspector assign your SFX (wav or mp3) to vars

4. Play! If you click over the cube, the sfx of AudioCenter(Empty Object)>AudioCenterScript.js plays.

Spiegazioni in italiano:

Immaginiamo di dover realizzare un platform come Super Mario per Wii che contiene centinaia di effetti sonori, differenti per ogni nemico che incontriamo in questo platform. E’impensabile poter gestire una tale quantità di effetti aggiungendoli semplicemente ai singoli prefab sparsi per i livelli, magari alcuni di questi suoni potrebbero essere pure condivisi da diversi oggetti o scaturire in azioni e reazioni varie sparse per decine di mondi virtuali giocabili.

La soluzione è quella di creare un solo oggetto vuoto che ha lo scopo di:

– contenere la lista completa dei suoni all’interno di variabili
– gestirne il volume tramite la funzione di Unity3D, PlayOneShot()
– avere un’unica ‘Audio Souce’ in game. La funzione PlayOneShot() ci permetterà di utilizzare anche più suoni nello stesso istante, sovrapponendoli.

Come funziona il nostro codice?

1. GetAudioCenter.js
a. Rileva l’esistenza dell’oggetto con il tag ‘AudioCenter’
b. Se positiva ottiene lo script ‘AudioCenterScript.js’ attaccato all’oggetto ‘AudioCenter’
c. Invia a AudioCenterScript.js> funzione PlayTrack() un valore ID della traccia
b. Rileva il click del mouse all’oggetto al cui è applicato come componente

2. AudioCenterScript.js
a. Incorpora nelle variabili le tracce sonore
b. Riceve all’interno della funzione PlayTrack(), la variabile trackValue
c. In base a trackValue viene eseguita una specifica traccia utilizzando il componente ‘Audio Source’. Questo ha di default disattivato il parametro ‘Play On Awake’, quindi è muto finchè non arriva l’input di GetAudioCenter.js

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D – AAA Sound Manager – JavaScript

Get Component – Script from Another Object

Get Component – Script from Another Object

Create a new scene with:

1. Camera

2. GUI Text

3. Cube, attach ‘CubeScript.js’


#pragma strict

// private per nasconderla in Inspector: nome dello script da prelevare
private var gameController : GameControllerScript;

function Start () {
    // inserisco in una variabile l'oggetto con tag GameController
    var gameControllerObject : GameObject = GameObject.FindWithTag ("GameController");
    // se l'oggetto con tag GameController esiste inserisco in una variabile il componente GameControllerScript.js
    if (gameControllerObject != null)
    {
        gameController = gameControllerObject.GetComponent (GameControllerScript);
    }
    // se l'oggetto con tag GameController non esiste restituisce un messaggio di errore
    if (gameControllerObject == null)
    {
        Debug.Log ("Cannot find 'GameControllerScript.js' script");
    }
}

function Update () {
}


function OnMouseDown ()
{
        // When you click over the object
        Debug.Log('clicked'); // Debug Code, remove in the end
        // invia a GameControllerScript.js, alla funzione TextUpdate() la variabile myNewTextValue
        var myNewTextValue : int = 2;
        gameController.TextUpdate (myNewTextValue);
}

4. Empty Object:

a. name it ‘GameController’
b. tag it ‘GameController’
c. Transform> Reset, it resets the position at 0,0,0
d. attach ‘GameControllerScript.js’


#pragma strict

var mytext : GUIText; // Assign it in Inspector
private var myTextValue : int; // hide it in Inspector, we want drive it only via code!

function Start () {
// give them an initial value when the game starts
mytext.text = "First text"; 
myTextValue = 1;
}

function Update () {
}


function TextUpdate (myNewTextValue : int) {
if (myNewTextValue == 2)
    {
        // play the track 1, volume 0-1
        mytext.text = "Second text";
    }
    // if (trackValue == 2) -> it will play track 2 and so on...
}

e. Inspector> ‘GameControllerScript.js’ assign the GUIText into var slot

5. Play, when you click over the Cube the GuiText changes!

For italian people: Come funziona?

1. ‘CubeScript.js’ controlla l’esistenza di GameController(oggetto)
2. se esiste ottiene da GameController(oggetto) il componente ‘GameControllerScript.js’
3. invia al click del mouse a GameControllerScript.js> funzione TextUpdate() un valore
4. ‘GameControllerScript.js’ riceve questo valore e cambia la stringa di testo.

By |Unity3D, Video Games Development|Commenti disabilitati su Get Component – Script from Another Object

Unity 3D Game Engine – Materials – Fade Between 2 Materials

Unity 3D Game Engine – Materials – Switch Materials

1. Project> RMB> Create> Material> Create: material1 and material2

2. MAIN TOP MENU> Gameobject> Create Other> Cube, assign the script:

SwitchMaterial.JS


#pragma strict

	var material1 : Material; // assign in Inspector
	var material2 : Material; // assign in Inspector
	var transitionTime = 2.0;

	function Start () {
	}

	function Update () {
	ChangeMaterial();
	
	}
	
	function ChangeMaterial () {
		renderer.material = material1;
		yield WaitForSeconds (transitionTime); // wait seconds... -> non può essere inserito all'interno di Update()
		renderer.material = material2;         // switch to material2
		
	}

3. Project DRAG AND DROP material1 and material2 over Inspector> SwitchMaterial.JS> material1 slot | material2 slot

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D Game Engine – Materials – Fade Between 2 Materials

Unity 3D Game Engine – Set Material Transparency

Unity 3D Game Engine – Set Material Transparency

1. MAIN TOP MENU> Gameobject> Create Other> Cube

2. Hierarchy, select the Cube> Inspector> materal slot, select Shader: Transparent/Diffuse

NOTICE; YOu HAVE TO USE a Transparent shader, in Unity3D only Transparent Shaders support alpha channel

3. Select the Cube and assign SetTransparency.JS:


#pragma strict

	function Start () {
	}

	function Update () {
		gameObject.renderer.material.color.a = 0.5; // set transparency to 50%
	}

By |Unity3D, Video Games Development|Commenti disabilitati su Unity 3D Game Engine – Set Material Transparency