I want to generate obj at random places which can move in random speed in X axis.,How to generate a object at random position with varying speed.
Hey Guys, I am working on something. In this project i want to generate a object at random position which can go left to right continuously. So far I have got this. This is inside start of a class that generate 50 object on which player can jump on when game loads.
void Start ()
{
Vector2 pos = transform.position;
for (int i = 0; i < noOfHolder; i++)
{
pos.x = Random.Range(-3, 3);
pos.y += Random.Range(1, 5);
Instantiate(holder, pos, Quaternion.identity);
}
and the holder object which is attached to it have a method.
updatePosition()
{
startingPos.x = moveSpeed * Mathf.Sin(Time.time);//*moveSpeed
transform.position = startingPos;
}
This code can generate multiple objects. but with the same sin speed from left to right. how can i vary there X speed. Thank you for answering.
@LA$$anonymous$$SHAY$$anonymous$$AVIA - could you please format you code again... half of each code block is part of previous text blocks... leave enters after each text line, to prevent this.
@eses-Thanks. Does the code is formatted now.??? I tried. One thing eses
i change the move speed. Some obj move to the half of the screen some full. I want all the object move to full screen with vary speed. I added a random range to moveSpeed.
@LA$$anonymous$$SHAY$$anonymous$$AVIA - I edited your post code blocks. What do you mean by "same sin speed" - you mean all your spawned objects move in similar manner?
If this is the case, you'll just have to offset the time value of sin for each object.
Answer by eses · Aug 31, 2018 at 02:16 PM
Hi @LAKSHAYMAVIA
The question is bit unclear, but if you want to modify the object positions using sin values, so that your objects don't move in same sync, you could do something like this in your instantiation:
var h = Instantiate(holder, pos, Quaternion.identity);
h.GetComponent<Holder>().offset = Random.Range(0f,3f);
And something like this in your Holder:
startingPos.x = moveSpeed * Mathf.Sin(Time.time + offset);
transform.position = startingPos;
With offset variable you can create movement similar to this:
Multiplying (like your line end comment shows) sin result only modifies the movement, but not it's timing.
@eses Hi Great man, Really love it... Thanks a lot. It really working great. I need to ask 2 more things....:)
Thank you so much for this. With your help I am able to Complete my first game. I don't have any other way to contact you so . Thank you . I am attaching the link where i have mention you name hope you don't $$anonymous$$d. https://gamejolt.com/games/myWorld/366507