Page 1 sur 1

[C#/JS] Ramasser une caisse de munitions

Publié : 14 Jan 2018 18:24
par Diridium
Bonjour,

Aujourd'hui je partage un script destiné à un FPS (ou à n'importe quel type de jeu, c'est comme vous voulez).
Ce script vous permet de ramasser une caisse de munitions et ainsi augmenter votre nombre de munitions (très simple donc). Shoteject étant votre nombre de munitions actuel.

Voici le script en C# :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class AmmoBox : MonoBehaviour {


int ammo = 30;
GameObject eject;

private ShotEject shoteject;
private bool  showGUI = false;

void  Start (){
shoteject = GameObject.Find("Eject").GetComponent<"ShotEject">();
}

void  Update (){
	if(showGUI == true){
		if(Input.GetKeyDown("e")){
		shoteject.reserve += ammo;
		Destroy (gameObject);
		}
	}
}

void  OnTriggerEnter ( Collider hit  ){
if(hit.gameObject.tag == "Player"){
	showGUI = true;
}
}

void  OnTriggerExit ( Collider hit  ){
if(hit.gameObject.tag == "Player"){
	showGUI = false;
}
}

void  OnGUI (){
if(showGUI == true){
	GUI.Box( new Rect(Screen.width/2-100,Screen.height/2-12.5f,200,25), "Press E to pickup ammo");
	}
}
}
Et aussi en JavaScript pour ceux que ça intéresse ^^ :

Code : Tout sélectionner

#pragma strict

var ammo : int = 30;
var eject : GameObject;

private var shoteject : ShotEject;
private var showGUI : boolean = false;

function Start () {
shoteject = GameObject.Find("Eject").GetComponent("ShotEject");
}

function Update () {
	if(showGUI == true){
		if(Input.GetKeyDown("e")){
		shoteject.reserve += ammo;
		Destroy (gameObject);
		}
	}
}

function OnTriggerEnter(hit : Collider){
if(hit.gameObject.tag == "Player"){
	showGUI = true;
}
}

function OnTriggerExit(hit : Collider){
if(hit.gameObject.tag == "Player"){
	showGUI = false;
}
}

function OnGUI(){
if(showGUI == true){
	GUI.Box(Rect(Screen.width/2-100,Screen.height/2-12.5,200,25), "Press E to pickup ammo");
	}
}
Si vous avez un problème avec un script ou si j'ai fait une erreur, n'hésitez pas à me me le signaler :p

Re: [CS/JS] Ramasser une caisse de munitions

Publié : 15 Jan 2018 10:34
par boubouk50
Salut Diridium, merci pour le partage.
De ce que je lis dans le code, il manque la classe ShotEject pour que le script marche.
Ce serait bien aussi de spécifier que la scène doit avoir un objet appelé Eject qui comprend le Component ShotEject et ce qu'il fait (je suppose que c'est pour ta réserve de munition).

Aussi, vu que l'ammoBox a un Collider et qu'elle utilise les fonctions de Trigger, il serait plus judicieux d'utiliser ces fonctions (notamment OnTriggerStay) pour coder le ramassage, et ainsi délaisser l'Update ().

Re: [CS/JS] Ramasser une caisse de munitions

Publié : 15 Jan 2018 12:09
par Diridium
Salut,

Merci pour ces précisions, en fait le script de base était en JavaScript et donc je l'ai directement traduit, j'ai obligé de corriger certaines choses ^^

Re: [CS/JS] Ramasser une caisse de munitions

Publié : 15 Jan 2018 12:19
par boubouk50
Certes, néanmoins quand tu partages un script, assure-toi qu'il soit tout de même fonctionnel. Ici, en l'état, il ne fonctionnera pas.

Re: [CS/JS] Ramasser une caisse de munitions

Publié : 15 Jan 2018 12:27
par Diridium
Je suis pas très doué pour expliquer (surtout mes scripts x) mais au moins je partage une base (peut-être qu'elle servira si quelqu'un arrive à la décrypter). La prochaine fois j'essaie de "décrypter" le script ou plutôt de l'expliquer avant de le partager

Re: [CS/JS] Ramasser une caisse de munitions

Publié : 15 Jan 2018 12:53
par boubouk50
Fait surtout en sorte qu'il fonctionne correctement.
Le partage c'est bien, on est totalement pour. Il faut tout de même un minimum de finition dessus pour pas que ça ressemble juste à un tas de ligne de code. Qui plus est, pour ce genre de script pas non plus très poussé, ce seront surtout des novices en code qui pourraient en avoir besoin, donc qui ne comprendront pas grand chose à la programmation, c'est pourquoi il est important de partager du code fonctionnel, expliqué et commenté, facile à prendre en main par le premier qui vient.