Question by
mjoellnier · Mar 08, 2016 at 09:23 PM ·
movementmovement scriptchild objectparent-child
Child Object won't move with parent
Hello all together! I have a problem which seemed to be simple at first but it's getting me stuck: I have a 2D character which moves based on a script (see below). I found a script to let the pupils follow the mouse courser but since I added this script to my character the pupils are fixed while the rest of the body moves. So I guess the problem lies within the script for the pupils. But I don't see the problem why this script blocks the pupils from moving. Do you guys have any ideas?
Here is the character hierarchy: 
And the scripts:
Character Moving Script (Attached to 'Character')
using UnityEngine;
using System.Collections;
public class CharacterWalking : MonoBehaviour {
public float speed; //Floating point variable to store the player's movement speed.
private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.
Animator anim;
// Use this for initialization
void Start()
{
//Get and store a reference to the Rigidbody2D component so that we can access it.
rb2d = GetComponent<Rigidbody2D> ();
anim = GetComponent<Animator> ();
}
//FixedUpdate is called at a fixed interval and is independent of frame rate. Put physics code here.
void FixedUpdate()
{
//Store the current horizontal input in the float moveHorizontal.
float moveHorizontal = Input.GetAxis ("Horizontal");
//Use the two store floats to create a new Vector2 variable movement.
Vector2 movement = new Vector2 (moveHorizontal, 0);
//Call the AddForce function of our Rigidbody2D rb2d supplying movement multiplied by speed to move our player.
rb2d.AddForce (movement * speed);
}
void Update() {
if (Input.GetKeyDown (KeyCode.A) || Input.GetKeyDown (KeyCode.D)) {
anim.SetBool ("Walking", true);
}
if (Input.GetKeyUp (KeyCode.A) || Input.GetKeyUp (KeyCode.D)) {
anim.SetBool ("Walking", false);
}
}
}
Pupil-Follow-Mouse script attached to 'Pupils'
using UnityEngine;
public class EyesFollow : MonoBehaviour {
public Transform reference;
public float factor = 0.25f;
public float limit = 0.08f;
private Vector3 center;
void Start() {
center = transform.position;
}
void Update () {
Vector3 pos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
pos.z = 0.0f;
Vector3 dir = (pos - reference.position) * factor;
dir = Vector3.ClampMagnitude(dir, limit);
Vector3 tt = center + dir;
transform.position = center + dir;
}
}
bildschirmfoto-2016-03-08-um-221755.jpg
(34.7 kB)
Comment
Your answer