【问题标题】:I want to generate obj at random places which can move in random speed in X axis我想在随机位置生成 obj 可以在 X 轴上以随机速度移动
【发布时间】:2018-08-31 05:38:52
【问题描述】:

我正在做某事。在这个项目中,我想在随机位置生成一个可以从左到右连续移动的对象。到目前为止,我已经得到了这个。

这是一个类的开始,它生成 50 个对象,当游戏加载时玩家可以在上面跳跃。

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

}

附加到它的持有者对象有一个方法。

updatePosition(){
//moveSpeed = Random.Range(1,3);tried this
startingPos.x = moveSpeed * Mathf.Sin(Time.time);//*moveSpeed

transform.position = startingPos;}

​

此代码可以生成多个对象。但从左到右的罪恶速度相同。

我改变移动速度。一些 obj 移动到屏幕的一半,一些已满。我希望所有对象以不同的速度移动到全屏。

感谢您的回答。

【问题讨论】:

  • 在 holder 对象的 Start 方法中定义 moveSpeed = Random.Range(1,3) 不在更新中。另外,如果您希望对象从左向右移动,则需要一个标志来定义对象将开始向后移动的偏移量

标签: c# unity3d 2d game-physics


【解决方案1】:

使用这个:

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);
    }
    moveSpeed = Random.Range(1,3);
    moveDistance = 1.0f;
}

void Update()
{
    startingPos.x = moveDistance * Mathf.Sin(Time.time * moveSpeed);
    transform.position = startingPos;
}

如果这不是你想要的,请更详细地描述你的情况,我会编辑答案。

【讨论】:

  • 非常感谢。
  • @user5234003 如果可行,请投票并接受答案。谢谢!
  • ryte 现在我没有资格获得这个..:)
  • 你需要 15 声望才能投票(橙色三角形),但我认为你仍然可以接受答案(绿色复选标记):)
  • 非常感谢您。在你的帮助下,我能够完成我的第一场比赛。所以我没有任何其他方式可以联系到你。谢谢你 。我附上我提到你名字的链接希望你不介意。 gamejolt.com/games/myWorld/366507
猜你喜欢
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多