怎么为实例变量设置最大值最小值呢?



  • 我希望为角色的攻速作出限制:0.5<=攻速<=5,增加至5以上时实际表现仍是5,减少至0.2以下时实际表现仍是0.5,实例变量的值不受影响。例如角色获得debuff导致攻速下降到-0.1,随后再获得buff攻速提升0.3也就是提升至0.2,在此期间无论攻速是-0.1还是0.2,实际表现都是0.5。请教一下大佬这怎么实现?
    另外还有个小问题请教下,设置一个情景,在某个时间点角色攻速为0.5,也就是说普通攻击冷却时间是2秒。现在我发动一次普通攻击,在此次普攻冷却的第0.1秒释放一个技能,技能效果是攻速提升2,此时按理来说攻速已经达到2.5,普攻的冷却时间是0.4秒,可是上一次普攻还有1.9秒的冷却没跑完。我是新人哈,但我猜这个问题可能不少人遇到过吧?就是攻速提升必须等到下次普攻才能体现出来,这合理吗?需不需要优化?
    (特喵的,这问题不少人遇到过个锤子,新人上来死磕攻速的就我一个吧doge



  • @唤境用户114514
    1.用clamp()表达式即可,这个表达式返回的值就是你所需要的规则。
    2.这个看你怎么设计了,我做攻速的实现方式是修改普攻动作动画速度,而不是单独的冷却,因此这种情况发生时普攻动作速度会在使用技能时加快,实际上也就是把剩余的冷却时间进行相应缩减。解决方案而言,可以设计成剩余时间直接减少到0.4(这样在给定场景下剩余冷却是0.3s),也可以按比例缩减,或者设为0.4s后直接重置计时器,每个的效果都有略微差异,但都是可行的。如果不管的话这一次就要等1.9s,体验上来说确实会差一点,不过这样也可能作为考验玩家操作水平的一种方法。



  • 我的方法是做一个布尔开关和冷却变量 只要攻击就禁止普攻 等两冷却变量时间到把开关转换 了才能继续普攻。 这样就比较方便其他变量对冷却的注入修改



  • @zjxdiu 受教了,谢谢大佬,我再试试



  • @OREZcn 谢谢,谢谢。但这能控制攻速的最大值最小值吗?我的写法就是普攻状态为真时每过(1/攻速)秒将普攻判断置为真。现在就怕攻速变负导致bug。当然也要避免攻速过快导致单次普攻动画播不完,还要控制build的强度



  • @唤境用户114514 就是第一个问题吧,最后设置攻速的时候用clamp()表达式,比如你的攻速要在1和5之间、然后其他地方计算出来的实时攻速是变量atkSpd,那么最后设置攻速的时候就是clamp(atkSpd,1,5)



  • @唤境用户114514 最大值和最小值可以通过一个事件规定变量的最大最小就行了 我其实不是很懂太多表达式用的都是土方法


登录后回复