- Home /
Controlling the update position of a cloned Gameobject C#
Hi everyone here's my problem!
I'm doing a 2D game were i got a ninja that slash when the mouse is press. The slash is a gameobject that get instantiated at the position of a empty gameObject everytime then die really quickly. Problem is when it get instantiated and if my player is moving the slash object is left behind.
What I want is that when the Clone of the slash is instantiated I want it's position to follow the slash GameObject position every frames. Anyones got an idea. Here's my code (it's in the mouseButton Event) :
public class PLayerController : MonoBehaviour {
public float MaxSpeed = 7f;
public bool facingRigth = true;
Animator anim;
bool grounded = false;
public Transform groundCheck;
float groundRadius =0.2f;
public LayerMask whatIsGround;
public float jumpForce = 500;
//Attacking
public Transform slash;
public GameObject slashObjectL;
public GameObject slashObjectR;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update ()
{
//Jumping
if(grounded && Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Ground", false);
rigidbody2D.AddForce(new Vector2(0,jumpForce));
}
if(Input.GetMouseButtonDown(0))
{
if(facingRigth)
{
GameObject slashLCopy = (GameObject)Instantiate(slashObjectL, slash.position, slash.rotation);
slashLCopy.transform.position = new Vector2(slash.position.x, slash.position.y); //NOT WORKING!!!!!!!
}
if(!facingRigth)
{
GameObject slashRCopy = (GameObject)Instantiate(slashObjectR, slash.position, slash.rotation);
//slashRCopy.transform = slash.position; //NOT WORKING EITHER!!!!
}
}
}
void FixedUpdate()
{
grounded = Physics2D.OverlapCircle(groundCheck.position,groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
//Jumping
anim.SetFloat("vSpeed", rigidbody2D.velocity.y);
float move = Input.GetAxis ("Horizontal");
anim.SetFloat ("Speed", Mathf.Abs (move));
rigidbody2D.velocity = new Vector2(move * MaxSpeed, rigidbody2D.velocity.y);
if(move > 0 && !facingRigth)
Flip();
if(move < 0 && facingRigth)
Flip();
}
void Flip()
{
facingRigth = !facingRigth;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Answer by brilliancenp · Feb 25, 2014 at 06:48 PM
I would think that you would want to make the slash a child of the player.
pseudo code:
slashObject.transform.parent = playerObject.transform;
This will make the slash follow the player as the player moves. I believe you can offset the slash from the parentObject by instantiating from a prefab with its vector positions set to the amount you want to offset from the parent object.
Your answer
![](https://koobas.hobune.stream/wayback/20220613134707im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How do you choose where your object Instatntiates? 2 Answers
How to instanciate transform to element of a list?,How Get Transform of a instanciated Prefap 3 Answers
Rotating a Vector3 in Instantiation 1 Answer
Instantiate rigidbody, transform or gameobject? 1 Answer
How to keep a Gameobject in the same position after a transform.Rotate? 2 Answers