- Home /
Change object coordinates to another ones upon button press
Okay, so im coding in csharp on unity in a 2d game, but have stumbled across a problem, im trying to make an object go to where the player is upon the press of the space button, however I trully have no idea how to do so. Heres the script I have so far (please note: im new to unity and coding overall, but doing my best to learn :S)
using UnityEngine;
using System.Collections;
public class Teleportation : MonoBehaviour {
// Use this for initialization
private void Start () {
GameObject player = GameObject.Find ("Player");
if (Input.GetKey(KeyCode.Space)){
transform.position = new Vector3(0,0,0);
}
}
}
Answer by VesuvianPrime · Feb 08, 2015 at 02:08 AM
You're close! You should be able to change:
transform.position = new Vector3(0,0,0);
To:
transform.position = player.transform.position;
Hey, thank you very much for the answer, however upon button press, nothing happens even though i've linked the script with a cube, any ideas what it could be? I might've put something wrong in the input section, but still cant figure out what exactly. note: my code however does not display any mistakes whatsoever.
Answer by Dicen777 · Feb 10, 2015 at 10:37 PM
There are a couple changes you will want to make. VesuvianPrime is correct in his answer, but there is some more to it.
You are checking to see if the Spacebar
is being pressed only on creation of the object. Anytime after the creation frame, the Spacebar
will not trigger anything because Start()
is never called again. You will want to check and execute the teleportation in the Update()
. I have created a class variable to hold player so it can be accessed by both methods.
Your code should look something more like this. I am assuming that you are attaching this script to the object that will be teleported. (Pardon me if there are any syntax errors as I am writing this in a basic text editor):
using UnityEngine;
using System.Collections;
public class Teleportation : MonoBehaviour {
private GameObject player;
private void Start () {
player = GameObject.Find ("Player");
}
private void Update() {
if (Input.GetKey(KeyCode.Space)){
transform.position = player.transform.position;
}
}
}
Your answer
Follow this Question
Related Questions
How can I make a collision sensitive teleporter for a 2D game #c 1 Answer
transform.position sends object to wrong position 1 Answer
Pixel Perfect 2 Answers
Instantiate Object position C#, not visible after new pos 1 Answer
Copyright ? 2 Answers