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); } } }
现在,当将randomSpin标志更改为true时,它将在每帧x y z上不间断地旋转随机角度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
但我希望它在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;
}
}
}