Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在其他随机值中每5秒旋转一个对象? 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类轮换市场:单一行为 { 公共游戏对象objectToSpin; 公共浮动spinX; 公共浮子多刺; 公共浮球; 公共bool randomSpin=false; 私有void Start() { var rb=GetComponent(); rb.角速度=随机的.大气层内; } 私有void更新() { 如果(随机自旋==真) { objectToSpin.transform.Rotate(Random.Range(spinX,360)、Random.Range(spinY,360)、Random.Range(spinZ,360)); } 其他的 { objectToSpin.transform.Rotate(spinX、spinY、spinZ); } } }_C#_Unity3d - Fatal编程技术网

C# 如何在其他随机值中每5秒旋转一个对象? 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类轮换市场:单一行为 { 公共游戏对象objectToSpin; 公共浮动spinX; 公共浮子多刺; 公共浮球; 公共bool randomSpin=false; 私有void Start() { var rb=GetComponent(); rb.角速度=随机的.大气层内; } 私有void更新() { 如果(随机自旋==真) { objectToSpin.transform.Rotate(Random.Range(spinX,360)、Random.Range(spinY,360)、Random.Range(spinZ,360)); } 其他的 { objectToSpin.transform.Rotate(spinX、spinY、spinZ); } } }

C# 如何在其他随机值中每5秒旋转一个对象? 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类轮换市场:单一行为 { 公共游戏对象objectToSpin; 公共浮动spinX; 公共浮子多刺; 公共浮球; 公共bool randomSpin=false; 私有void Start() { var rb=GetComponent(); rb.角速度=随机的.大气层内; } 私有void更新() { 如果(随机自旋==真) { objectToSpin.transform.Rotate(Random.Range(spinX,360)、Random.Range(spinY,360)、Random.Range(spinZ,360)); } 其他的 { objectToSpin.transform.Rotate(spinX、spinY、spinZ); } } },c#,unity3d,C#,Unity3d,现在,当将randomSpin标志更改为true时,它将在每帧x y z上不间断地旋转随机角度 但我希望它在5秒后随机旋转5秒,以改变x y z的随机值,并从最后一点开始继续,然后在5秒后随机角度,以此类推。例如,使用Time.deltaTime创建一个简单的计时器,例如 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateCamera : MonoB

现在,当将randomSpin标志更改为true时,它将在每帧x y z上不间断地旋转随机角度


但我希望它在5秒后随机旋转5秒,以改变x y z的随机值,并从最后一点开始继续,然后在5秒后随机角度,以此类推。

例如,使用
Time.deltaTime
创建一个简单的计时器,例如

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateCamera : MonoBehaviour
{
    public GameObject objectToSpin;
    public float spinX;
    public float spinY;
    public float spinZ;
    public bool randomSpin = false;

    private void Start()
    {
        var rb = GetComponent<Rigidbody>();
        rb.angularVelocity = Random.insideUnitSphere;
    }

    private void Update()
    {
        if (randomSpin == true)
        {
            objectToSpin.transform.Rotate(Random.Range(spinX, 360), Random.Range(spinY, 360), Random.Range(spinZ, 360));
        }
        else
        {
            objectToSpin.transform.Rotate(spinX, spinY, spinZ);
        }
    }
}
private float timer=5;
私有void更新()
{
如果(随机自旋==真)
{
timer-=Time.deltaTime;

例如,if(timer有一个使用
Time.deltaTime
的简单计时器,例如

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateCamera : MonoBehaviour
{
    public GameObject objectToSpin;
    public float spinX;
    public float spinY;
    public float spinZ;
    public bool randomSpin = false;

    private void Start()
    {
        var rb = GetComponent<Rigidbody>();
        rb.angularVelocity = Random.insideUnitSphere;
    }

    private void Update()
    {
        if (randomSpin == true)
        {
            objectToSpin.transform.Rotate(Random.Range(spinX, 360), Random.Range(spinY, 360), Random.Range(spinZ, 360));
        }
        else
        {
            objectToSpin.transform.Rotate(spinX, spinY, spinZ);
        }
    }
}
private float timer=5;
私有void更新()
{
如果(随机自旋==真)
{
timer-=Time.deltaTime;

if(timer如果你想要一个恒定的速度和一个随机的方向,你可以使用
random.onUnitSphere
随机选择一个旋转轴,然后以一定的速度围绕它旋转

这里有一个使用协同路由的解决方案。如果您想停止协同路由,可以使用
stopcroutine(“Spin”)
停止协同路由,稍后使用
startcroutine(“Spin”)
启动它:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类轮换市场:单一行为
{
公共游戏对象objectToSpin;
公共向量3棘轴;
公共浮动时间tospin=5f;
公共浮动转速=20f;
公共bool randomSpin=false;
私有void Start()
{
var rb=GetComponent();
rb.角速度=随机的.大气层内;
开始例行程序(“旋转”);
}
私有void更新()
{
}
}
IEnumerator自旋()
{
浮动自旋计时器;
while(true)
{
如果(随机自旋==真)
{ 
spinAxis=Random.onUnitSphere;
}
spinTimer=timeToSpin;
同时(旋转计时器>0f)
{
objectToSpin.transform.Rotate(spinAxis,Time.deltaTime*spinSpeed);
spinTimer-=Time.deltaTime;
收益返回空;
}
}
}

如果您想要一个恒定的速度和一个随机的方向,您可以使用
random.onUnitSphere
随机选择一个要绕其旋转的轴,然后以一定的速度绕其旋转

这里有一个使用协同路由的解决方案。如果您想停止协同路由,可以使用
stopcroutine(“Spin”)
停止协同路由,稍后使用
startcroutine(“Spin”)
启动它:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类轮换市场:单一行为
{
公共游戏对象objectToSpin;
公共向量3棘轴;
公共浮动时间tospin=5f;
公共浮动转速=20f;
公共bool randomSpin=false;
私有void Start()
{
var rb=GetComponent();
rb.角速度=随机的.大气层内;
开始例行程序(“旋转”);
}
私有void更新()
{
}
}
IEnumerator自旋()
{
浮动自旋计时器;
while(true)
{
如果(随机自旋==真)
{ 
spinAxis=Random.onUnitSphere;
}
spinTimer=timeToSpin;
同时(旋转计时器>0f)
{
objectToSpin.transform.Rotate(spinAxis,Time.deltaTime*spinSpeed);
spinTimer-=Time.deltaTime;
收益返回空;
}
}
}

它每5秒改变一次角度,但我猜我错问了这个问题。我想让它旋转5秒,然后它将改变为随机x y z,然后旋转5秒,然后再次随机改变,然后旋转5秒。换句话说,它应该一直旋转,每5秒随机改变一次xyz。哦,这太好了不同的东西^^它每5秒改变一次角度,但我猜我问错了这个问题。我希望它旋转5秒,然后它将改变为随机x y z,然后旋转5秒,然后再次随机改变,然后旋转5秒。换句话说,它应该一直旋转,每5秒随机改变一次xyz哦,那是不一样的^^只是方向应该是随机的还是速度也应该是随机的?只是方向应该是随机的还是速度也应该是随机的?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateCamera : MonoBehaviour
{
    public GameObject objectToSpin;
    public Vector3 spinAxis;
    public float timeToSpin = 5f;
    public float spinSpeed = 20f;
    public bool randomSpin = false;

    private void Start()
    {
        var rb = GetComponent<Rigidbody>();
        rb.angularVelocity = Random.insideUnitSphere;
        StartCoroutine("Spin");
    }

    private void Update()
    {
    }
}

IEnumerator Spin() 
{
    float spinTimer;
    while (true)
    {
        if (randomSpin == true)
        { 
            spinAxis = Random.onUnitSphere;
        }

        spinTimer = timeToSpin;
        while (spinTimer > 0f) 
        {
            objectToSpin.transform.Rotate(spinAxis, Time.deltaTime * spinSpeed);
            spinTimer -= Time.deltaTime;
            yield return null;
        }
    }
}