Hello there, this script spawns a prefab in front of the player when E is pressed however the player does not know exactly where he/she is placing the object.
How could this script be altered so that the first time E is pressed it shows where the object will be placed but is still moveable (it is just following the player around) at this point the player can either press E again to place the object in that desired position or press Esc and delete the object all together? Thanks.
public var prefabObject : GameObject;
private var offset : Vector3;
private var fwd : Vector3;
private var clone : GameObject;
var unit : float = 3.0f;
function Update()
{
fwd = transform.TransformDirection(Vector3.forward) * unit;
offset = transform.position + fwd;
if(Input.GetKeyDown(KeyCode.E))
{
clone = Instantiate(prefabObject, offset, transform.rotation);
}
}
I solved it by writing this script which hides and shows the object that is going to be placed but is not actually part of the placing function.
renderer.enabled = false;
function Update () {
if(Input.GetKeyDown(KeyCode.Z)){
renderer.enabled = true;
}
if(Input.GetKeyDown(KeyCode.X)){
renderer.enabled = false;
}
}
If knowing where it will spawn is your problem try putting a gameobject or small cube attach to your player in front of them, `var spawntarget : Transform;
public var prefabObject : GameObject;
private var offset : Vector3;
private var fwd : Vector3;
private var clone : GameObject;
var unit : float = 3.0f;
function Update()
{
fwd = transform.TransformDirection(Vector3.forward) * unit;
offset = transform.position + fwd;
if(Input.GetKeyDown(KeyCode.E))
{
clone = Instantiate(prefabObject, spawntarget.position, transform.rotation);
}else if(Input.GetKey("r")){
clone.position = spawntarget.position;
}
}
`
This allows the player to know where the object will spawn, and how to move it