- Home /
How to freeze movement on X-axis. (See Comments for Update)
I'm putting the finishing touches on my Pong clone but I am unable to change the enemy's speed once I set him to follow the ball's position.Y
First things first, im trying to get it to listen to the speed variable change
Second I'm looking for a point in the right direction as far as getting the enemy to change his speed depending on the speed of the ball.
Here's my code: C#
using UnityEngine;
using System.Collections;
public class NewEnemyAI : MonoBehaviour
{
public float yMin, yMax;
public Transform target;
public float speed;
void Update ()
{
float inputSpeed = Input.GetAxisRaw ("Vertical");
transform.position += new Vector3 (0, inputSpeed * speed * Time.deltaTime, 0);
}
void FixedUpdate ()
{
rigidbody.position = new Vector3
(8.0f,
Mathf.Clamp (target.position.y, yMin, yMax),
1.0f);
}
}
Answer by KrisSchnee · Mar 14, 2014 at 04:26 AM
I think that in the Start function you should define your "speed" variable to be the velocity of the ball. Something like:
speed = GameObject.Find("ball").velocity
Then the variable would be a reference... I think... to the ball's velocity. If I'm wrong and that line only fetches the current value, then you could have a reference like:
GameObject ball;
Then in Start:
ball = GameObject.Find("ball")
And then whenever you need it, reference "ball.velocity" which is a Vector3.
Answer by Guruguy69 · Mar 14, 2014 at 11:09 AM
So i ended up using a vector3.movetowards method and its working great except I cannot get the enemy paddle to freeze on the X-Axis. I tried clicking the freeze X position in the rigidbody component but since my code is in the update function it overrides it I guess. Any help on code for freezing X-Axis movement in the update function?
http://docs.unity3d.com/Documentation/ScriptReference/Vector3.MoveTowards.html
using UnityEngine;
using System.Collections;
public class EnemyMove2Ball : MonoBehaviour {
public Transform target; // drag the player here
float speed = 5.0f; // move speed
void Update()
{
transform.position = Vector3.MoveTowards
(rigidbody.position,
target.position,
speed*Time.deltaTime);
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
C# Changing the speed/velocity of an enemy independent of navmesh 0 Answers
How to get and change animation speed of animator? 2 Answers