- Home /
How do I move a Prefab toward a freshly spawned Prefab?
I currently have two Prefabs spawning on Mouse click. One is a target, and the other is a bomb that I want to move toward that target. The target spawns wherever the mouse was clicked, and the bomb spawns at the bottom of the screen.
Here's my code:
#pragma strict
var sniperTarget : Transform;
var bombStache : Transform;
var isSnipe = false;
function Start () {
}
function Update () {
if(isSnipe === false){
if(Input.GetMouseButtonDown(0)){
isSnipe = true;
var mousex = Input.mousePosition.x;
var mousey = Input.mousePosition.y;
var cloneTarget : Transform;
cloneTarget = Instantiate(sniperTarget, Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1)), Quaternion.identity);
var cloneStache : Transform;
cloneStache = Instantiate(bombStache, transform.position - ( transform.up * 4.6), Quaternion.identity);
}
}
}
I understand I will need to create a new script and attach it to my bomb, but what code do I add to that script to make the bomb move toward the sniper target that was just spawned?
There are multiple different approaches, and causing one object to move towards another has been covered a bizillion times on Unity Answers. Some specifics to think about:
How do you want to move the bomb...Rigidbody, direct manipulation of the Transform, or CharacterController?
2D solution or 3D solution?
I assume the bomb will need to 'explode' if it hits the target. What kind of hit detection is good enough? Distance check, collider distance check (OverlapShpere()), or collision?
Does the bomb move towards the initial position of the target, or does it track the target as it moves?
Anyway, you will find lots of material on UA no matter what your specific are.
Answer by Simon-Larsen · Mar 25, 2014 at 03:51 AM
I think MoveTowards is exactly what you're looking for.
// The target marker.
var target: Transform;
// Speed in units per sec.
var speed: float;
function Update () {
// The step size is equal to speed times frame time.
var step = speed * Time.deltaTime;
// Move our position a step closer to the target.
transform.position = Vector3.MoveTowards(transform.position, target.position, step);
}
Your answer
Follow this Question
Related Questions
Updating prefab information live 2 Answers
Give prefab a parent 2 Answers
How can I make an in-game search engine similar to Scribblenauts 1 Answer
i need to destroy prefab clones 1 Answer
Spawn a prefab 1 Answer