0
Этот скрипт должен вызывать объект после нажатия на другой объект, который ближе, чем hitRange, и имеет тег «Блок». Проблема в том, что он всегда создает новый объект после нажатия LMB, также когда необходимые условия не выполнялись.Unity3D Instantiate работает, когда выполняются не все условия.
#pragma strict
var blockName : String;
private static var blockToPlace : Rigidbody;
var hitRange : float;
private var hit : RaycastHit;
var blockLayer : int = 8;
private var hitBlock : boolean;
function Update(){
if(Input.GetMouseButtonDown(0)){
blockToPlace = EditorUtility.InstantiatePrefab(AssetDatabase.LoadAssetAtPath("Assets/Models/Blocks/"+blockName+".prefab", Rigidbody)) as Rigidbody;
hitBlock = Physics.Raycast(transform.position, transform.forward, hit, Mathf.Infinity, blockLayer);
if(hitBlock == true){
if(hit.collider.tag == "Block"){
if(hit.distance < hitRange){
var block : Rigidbody;
block = Instantiate(blockToPlace,hit.normal+hit.transform.position,Quaternion.identity) as Rigidbody;
hitBlock = false;
}
}
}
}
}
Большое спасибо! – janw23
@JWPL Обязательно принимайте ответ, если он удовлетворительно решает вашу проблему, поэтому ваш вопрос отмечен как ответ. – Serlite
@JWPL не проблема, рад, что я помог кому-то –