- Home /
Instantiating a prefab with velocity
I am pretty new to Unity and am trying to make an Infinite runner game. I have the floor generating randomly, however I cannot get the floor to move at all, I have tried using both addForce and adding a velocity to the rigidbody, bot neither have worked.
public Transform mainPrefab;
public Rigidbody floorSpeed;
public Vector3 startPosition;
public Vector3 nextPosition;
public int numberOfObjects;
private Queue<Transform> objectQueue;
void Start () {
objectQueue = new Queue<Transform>(numberOfObjects);
nextPosition = startPosition;
for (int i = 0; i < numberOfObjects; i++){
Transform o = (Transform)Instantiate(mainPrefab);
o.localPosition = nextPosition;
nextPosition.z += o.localScale.z*5;
objectQueue.Enqueue (o);
floorSpeed = o.GetComponent<Rigidbody>();
floorSpeed.AddForce(0, 0, -1);
}
}
Have you tried increasing the amount of force you are adding? $$anonymous$$ake a variable called force or something and then change:
floorSpeed.AddForce(0, 0, -1);
to
Vector3 dir = new Vector3(0,0,-1);
floorSpeed.AddForce(dir * force);
Then you can try changing the value of force in the inspector until you get the desired speed.
Answer by meat5000 · Mar 31, 2016 at 11:25 AM
I presume the floor is set to Kinematic? Otherwise it would be knocked about by the physics engine. You can use MovePosition and MoveRotation to move that object.
Also, you should handle these calls in FixedUpdate as its part of the physics engine.
Your answer
Follow this Question
Related Questions
Runtime prefab instantiation issue 1 Answer
initial velocity for instantiated ragdoll prefab 1 Answer
How to instantiate a prefab with initial velocity? 2 Answers
How do I re-instantiate original prefab after a game object inside has been destroyed? 2 Answers
[C#] How can I destroy instantiated prefabs when many are created with the same name? 2 Answers