Hi! Need help to convert to C#
JS code:
function scoresCalculation()
{
yield WaitForSeconds (0.2);
}
Have a look in the script reference:
http://docs.unity3d.com/Documentation/ScriptReference/WaitForSeconds.html
notice its examples are provided in either language… In this case, you need to make sure your method has a return type of IEnumerator (and include the “return new” keywords):
using UnityEngine;
using System.Collections;
public class scores : MonoBehaviour {
IEnumerator scoresCalculation() {
yield return new WaitForSeconds(.2);
}
}
ineteye
4
Think i find the problem with object destroying… but then how to move destroy to scoreCalculation ();
script clickdetecting.cs :
public IEnumerator scoresCalculation ()
{
yield return new WaitForSeconds(0.2f);
Debug.Log("TEST");
if(destroyed == 3)
{//if we destroyed 3 ball
GameObject score1=(GameObject)Instantiate(scoreParticle, obj - new Vector3(0,0,0.3f), Quaternion.identity); //instantiate scoreParticle
score1.renderer.material=score30; //give material to scoreParticle
score1.renderer.material.color = color;//give ball's color to scoreParticle
//scoreText.text=""+(int.Parse(scoreText.text)+30); //plus 30 to score text
container.GetComponent<instantiate>().score=""+(int.Parse(container.GetComponent<instantiate>().score)+30); //plus 30 to score text
}
//below this is everything same logic
if(destroyed == 4)
{
GameObject score2=(GameObject)Instantiate(scoreParticle, obj - new Vector3(0,0,0.3f), Quaternion.identity);
score2.renderer.material=score50;
score2.renderer.material.color = color;
//scoreText.text=""+(int.Parse(scoreText.text)+50);
container.GetComponent<instantiate>().score=""+(int.Parse(container.GetComponent<instantiate>().score)+50);
}
print("destroyed "+destroyed);
destroyed=0;
}
other script chack.cs where score calculation called:
using UnityEngine;
using System.Collections;
public class chack : MonoBehaviour
{
//this script is attached every ball and it must be disabled, clickdetecting script will enable this
public GameObject particle;
private bool count = true;
private int count1 =0;
private int count2 =0;
public void Start ()
{
GameObject container = GameObject.Find ("Container"); //container which contains ball's objects
rigidbody.position = new Vector3 (rigidbody.position.x, rigidbody.position.y, 0);
Vector3 myPos = transform.position;
foreach (Transform child in container.transform) { //check if there is same tagged ball near this ball
Transform t = child.transform;
t.position = new Vector3 (t.position.x, t.position.y, 0);
myPos = new Vector3 (myPos.x, myPos.y, 0);
var distance = (t.position - myPos).sqrMagnitude;
if (distance > 0.0001f && distance < 0.1f && gameObject.tag == child.gameObject.tag)
{ //if distance is less then 0.1f between same balls
count1++;
//Debug.Log("distance = "+distance);
//Debug.Log ("clickdetecting.destroyed = "+clickdetecting.destroyed+" count "+count);
child.gameObject.GetComponent<chack>().enabled = true; //enable same ball's "chack" script
Color[] modifiedColors = particle.GetComponent<ParticleAnimator>().colorAnimation; //get particle color and modify it to match this ball's color
modifiedColors [0] = renderer.material.color;
modifiedColors [1] = renderer.material.color;
modifiedColors [2] = renderer.material.color;
modifiedColors [3] = renderer.material.color;
modifiedColors [4] = renderer.material.color;
particle.GetComponent<ParticleAnimator>().colorAnimation = modifiedColors; //give particle modified color
var newParticle = Instantiate (particle, transform.position, transform.rotation); //instantiate particle
if (count) {
clickdetecting.destroyed++;
//if (Time.timeScale != 0 && count1==count2)
if (Time.timeScale != 0)
{
StartCoroutine(Camera.main.GetComponent<clickdetecting>().scoresCalculation ());//call clickdetecting script which is attached to main camera
}
count = false;
}
Destroy (gameObject); // Think that is problemed Destroy ....
}
}
}
}
ineteye
3
So this on JS:
function Destroying(){
for (var child:Transform in container.transform){
Destroy(child.gameObject); //destroy the ball
var modifiedColors : Color[] = particle.GetComponent.<ParticleAnimator>().colorAnimation; //get particle color and modify it to match this ball's color
modifiedColors[0] = child.renderer.material.color;
modifiedColors[1] = child.renderer.material.color;
modifiedColors[2] = child.renderer.material.color;
modifiedColors[3] = child.renderer.material.color;
modifiedColors[4] = child.renderer.material.color;
particle.GetComponent.<ParticleAnimator>().colorAnimation = modifiedColors; //give particle modified color
var particle=Instantiate(particle, child.transform.position, child.transform.rotation) as GameObject; //instantiate particle
yield WaitForSeconds(1.5); //wait 0.5 second
}
enabled=false;
}
Will be in C#:
bool sleep;
public void Destroying (){
foreach(Transform child in container.transform){
Destroy(child.gameObject); //destroy the ball
Color[] modifiedColors = particle.GetComponent<ParticleAnimator>().colorAnimation; //get particle color and modify it to match this ball's color
modifiedColors[0] = child.renderer.material.color;
modifiedColors[1] = child.renderer.material.color;
modifiedColors[2] = child.renderer.material.color;
modifiedColors[3] = child.renderer.material.color;
modifiedColors[4] = child.renderer.material.color;
particle.GetComponent<ParticleAnimator>().colorAnimation = modifiedColors; //give particle modified color
GameObject NewParticle=Instantiate(particle, child.transform.position, child.transform.rotation) as GameObject; //instantiate particle
//yield return new WaitForSeconds(1.5f); //wait 0.5f second
if(sleep) return;
StartCoroutine(Wait());
}
enabled=false;
}
IEnumerator Wait()
{
sleep=true;
yield return new WaitForSeconds(1.5f);
}