- 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
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