You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#(Unity)中实现50%概率将int变量force的值加1?

实现50%概率提升force变量的Unity解决方案

直接用Unity内置的Random.value就能实现50%概率的逻辑,它会返回0.0到1.0之间的随机浮点数,判断该值小于0.5即可触发force加1的操作。以下是修改后的完整脚本:

public class IfExperiment : MonoBehaviour
{
    [Range(0,100)] public int force = 0;
    private Rigidbody rb; // 提前缓存组件,避免每帧重复获取浪费性能

    void Start()
    {
        force += 2;
        rb = GetComponent<Rigidbody>(); // 只在Start里获取一次刚体组件
    }
    
    void Update()
    {
        // 50%概率触发force加1,同时限制不超过Range设定的最大值100
        if (Random.value < 0.5f && force < 100)
        {
            force += 1;
        }

        rb.AddForce(Vector3.one * force);
        
        if (force > 1)
        {
            rb.AddForce(Vector3.forward * force);
        }
    }
}

关键修改说明:

  • 优化组件获取:把Rigidbody的获取移到Start()中,避免每帧调用GetComponent造成不必要的性能开销,这是Unity开发的基础优化习惯。
  • 50%概率逻辑:Random.value < 0.5f的判断正好对应50%的触发概率,随机数分布是均匀的。
  • 边界限制:增加force < 100的判断,防止变量超出你设置的[Range(0,100)]范围。

可选调整(按需选择):

如果你不想每帧都触发概率判断,可以改成在特定操作下触发(比如按下空格键时):

void Update()
{
    // 按下空格键时才触发概率判断
    if (Input.GetKeyDown(KeyCode.Space))
    {
        if (Random.value < 0.5f && force < 100)
        {
            force += 1;
        }
    }

    // 原有施加力的逻辑保持不变
    rb.AddForce(Vector3.one * force);
    
    if (force > 1)
    {
        rb.AddForce(Vector3.forward * force);
    }
}

内容的提问来源于stack exchange,提问作者TheElectricWolf _

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:03:33