Hi. I’m trying to place a block ever 0.15 second when i,M holding mouse button down. it Works perfectly. However, when i try to do the same thing to destroy them (every 0.3 second) it waits 0.3 second, then destroy one every frame. How can i fix this ?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class placeBlock : MonoBehaviour
{
public GameObject cube;
public Collider up;
public Collider bottom;
public Collider right;
public Collider left;
public Collider front;
public Collider back;
if(Input.GetMouseButton(0))
{StartCoroutine(MyMethod());}
if(Input.GetMouseButton(1))
{StartCoroutine(MyMethod2());}
}
void Place2(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo))
{
Destroy(hitInfo.transform.parent.gameObject);}
}
void Place(){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo))
{
if (hitInfo.collider == up){
Instantiate(cube,new Vector3(this.transform.position.x,this.transform.position.y + 1,this.transform.position.z), Quaternion.identity);}
if (hitInfo.collider == bottom){
Instantiate(cube,new Vector3(this.transform.position.x,this.transform.position.y - 1,this.transform.position.z), Quaternion.identity);}
if (hitInfo.collider == right){
Instantiate(cube,new Vector3(this.transform.position.x - 1,this.transform.position.y,this.transform.position.z), Quaternion.identity);}
if (hitInfo.collider == left){
Instantiate(cube,new Vector3(this.transform.position.x + 1,this.transform.position.y,this.transform.position.z), Quaternion.identity);}
if (hitInfo.collider == front){
Instantiate(cube,new Vector3(this.transform.position.x,this.transform.position.y,this.transform.position.z - 1), Quaternion.identity);}
if (hitInfo.collider == back){
Instantiate(cube,new Vector3(this.transform.position.x,this.transform.position.y,this.transform.position.z + 1), Quaternion.identity);}
}}
IEnumerator MyMethod(){
yield return new WaitForSeconds(0.15F);
Place();
}
IEnumerator MyMethod2(){
yield return new WaitForSeconds(0.3F);
Place2();
}}