[RESOLU]jeu de golf - faire avancer la balle

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
marcotab
Messages : 26
Inscription : 24 Août 2014 18:13

[RESOLU]jeu de golf - faire avancer la balle

Message par marcotab » 25 Août 2014 10:05

Bonjour
pour débuter avec Unity j'ai pensé que me confronter à l'élaboration d'un jeu de mini golf serait la chose la plus simple. Je peux par la suite intégrer mes travaux 3D.
J'ai trouvé un ensemble de vidéos dont celles de Formation facile : https://www.youtube.com/watch?v=7cA06UK6FfM
Je me suis donc lancé avec plaisir dans l'écoute de ces vidéos et je me suis attelé à taper le code au fur et à mesure tout en essayant de comprendre les rudiments du code.
Malheureusement, le tuto présente des lacunes au niveau de la présentation du code et je suis dans l'incapacité de faire bouger ma balle. Je ne comprends pas pourquoi !
L'un d'entre vous peut-il me mettre sur la voie ?

Code : Tout sélectionner

static var canShoot : boolean = true;
static var shootPower : float = 0;
static var speedBonus : int = 0;
var target : Transform;
var camDistance = 2;

var minCam : float = 0;
var nbShoots : int = 0;

var xSpeed = 150.0;
var ySpeed = 150.0;
var yMinLimit = 0;
var yMaxLimit = 0;
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;
}

function FixeUpdate ()
{	
	if (Input.GetButtonUp("Fire1") && canShoot == true)
	{
		nbShoots += 1;
		target.rigidbody.freezeRotation = false;
		target.gameObjet.rigidbody.velocity = transform.TransformDirection (Vector3(0,0, shootPower + speedBonus));
		canShoot = false;
	}
}

function LateUpdate ()
{
	print(target.rigidbody.velocity.magnitude); //pour afficher dans la console
	
	if (target)
	{
		x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
		shootPower += Input.GetAxis("Mouse Y") * ySpeed * 0.01;
		if (shootPower < 0)
		{
			shootPower = 0;
		}
		if(shootPower > 25)
		{
			shootPower = 25;
		}
		y = ClampAngle (y, yMinLimit, yMaxLimit);
		var rotation = Quaternion.Euler(y,x,0);
		var position = rotation * Vector3(0.0, 0.0, -camDistance) + target.position;
		
		transform.rotation = rotation;
		transform.position = position;
		
		if(transform.position.y < minCam)
		transform.position.y = minCam;
	}
	
	if (Input.GetButtonUp("Fire2") && camDistance == 2)
	{
		camDistance += 5;
	}
	else if(Input.GetButtonUp("Fire2") && camDistance == 7)
	{
		camDistance -= 5;
	}
}

	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);
}
De plus ce script est curieux dans le sens où je ne parviens pas à positionner ma caméra précisément avant de frapper la balle. Ici encore, si l'un d'entre vous pouvait m'orienter...
Merci

error404
Messages : 160
Inscription : 13 Nov 2010 07:51
Contact :

Re: jeu de golf - faire avancer la balle

Message par error404 » 26 Août 2014 10:31

Salut,

Comment souhaites tu faire avancer la balle ?
Au clic tu veux appliquer une force ?
Dans ce cas tu peux faire dans ton OnMouseUp() un rigidbody.AddForce(puissance);

Si ta balle a un rigidbody tu as simplement à utiliser le addforce pour la faire avancer. Après tout dépend de comment tu veux la faire avancer.

marcotab
Messages : 26
Inscription : 24 Août 2014 18:13

Re: jeu de golf - faire avancer la balle

Message par marcotab » 28 Août 2014 19:52

Bonsoir merci pour cette réponse
mais j'ai abandonné l'idée de propulser la balle d'un clic de souris et me suis inspiré de l'Assets store avec le projet roll the ball
merci tout de même

Répondre

Revenir vers « Scripting »