控制gameObject随机旋转的功能代码

大纲:
1)添加一个游戏对象
2)控制游戏对象自动随机旋转
3 ) 运行
4)引出的新问题?旋转体旋转越来越慢了?
实现:
1、在Hierarchy视图新建一个空的游戏对象Asteroid,重置Transform组件。添加Rigidbody组件,取消勾选Use Gravity(取消重力的影响,根据自己项目需要),添加Capsule Collider组件,勾选Is Trigger选项(为了使它能进行物理碰撞)

2、添加控制游戏对象随机旋转的功能
在Project视图中Assets/_Scripts(没有就创建)目录下新建一个脚本RandomRotator.cs,并将其绑定到上面的游戏对象Asteroid上。
代码:

using UnityEngine;
using System.Collections;

public class RandomRotator : MonoBehaviour {
    public float tumble = 10.0f;
    void Start () {
        GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;
    }

}

3、运行ok

解析:上面的angularVelocity表示刚体的角速度,在3D数学中,角速度描述的是作圆周运动的物体单位时间旋转的过的角度。Random.insideUnitSphere表示单位长度半径球体内的一个随机点(向量),这个随机点与旋转系统tumble的乘积描述了在半径长度为tumble的球体中的随机点。由此可以实现刚体以一个随机的角速度旋转。

4、旋转体旋转越来越慢了?
细心的你会发现,游戏对象旋转的速度随着时间的流逝似乎越来越慢,why?
解答:原因在于设置了刚体的角速度阻力(简称:角阻力)属性angular drag,如图:
这里写图片描述
,该值为0时表示不受空气阻力影响,极大值时会使旋转的物体立即停止。
所以,对游戏对象设置角阻力为0

其他:角阻力上面的参数Drag表示阻力,即物体受力运动时受到的空气阻力,在此也设置为0.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity2D中实现鱼绕Z轴随机转圈的效果,可以按照以下步骤进行: 1. 创建鱼的预制体:首先创建一个鱼的预制体,可以使用Unity的模型编辑器或导入自定义模型。 2. 添加组件:给鱼添加刚体组件和碰撞器组件,以便进行物理模拟。确保鱼的刚体组件启用了运动学选项,以便通过代码控制鱼的运动。 3. 编写鱼的随机转圈脚本:创建一个脚本用于控制鱼的随机转圈。在脚本中,可以使用随机数生成鱼的旋转速度和半径。 ```csharp using UnityEngine; public class FishRotation : MonoBehaviour { public float minSpeed = 30f; // 鱼的最小旋转速度 public float maxSpeed = 90f; // 鱼的最大旋转速度 public float minRadius = 1f; // 鱼的最小转圈半径 public float maxRadius = 3f; // 鱼的最大转圈半径 private float rotationSpeed; private float radius; void Start() { // 设置随机旋转速度和转圈半径 rotationSpeed = Random.Range(minSpeed, maxSpeed); radius = Random.Range(minRadius, maxRadius); } void Update() { // 计算鱼的旋转角度 float angle = rotationSpeed * Time.deltaTime; // 计算鱼的新位置 Vector3 newPosition = transform.position; newPosition.x = Mathf.Sin(angle) * radius; newPosition.y = Mathf.Cos(angle) * radius; // 更新鱼的位置 transform.position = newPosition; } } ``` 4. 在场景中放置鱼的实例:在场景中放置一些鱼的实例,并将鱼的随机转圈脚本(FishRotation)添加到每只鱼的GameObject上。 通过以上步骤,你就可以实现鱼绕Z轴随机转圈的效果。每只鱼将以随机旋转速度和半径进行转圈,使其看起来更加自然。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值