首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何在我的标签后激活\enable和物体会以一定的力量或速度碰撞(VR游戏- UNITY 3D)

我如何在我的标签后激活\enable和物体会以一定的力量或速度碰撞(VR游戏- UNITY 3D)
EN

Stack Overflow用户
提问于 2019-10-04 01:30:56
回答 1查看 37关注 0票数 1

我正在开发一款虚拟现实游戏。是一款格斗游戏,玩家将能够对敌人拳打脚踢(他的拳头上将会有一个碰撞器和一个残废的物体,上面有损坏的脚本)。我需要一个脚本来激活另一个对象(有伤害脚本的那个)-(放在他的拳头上),但只是在一定的速度或力量下(你知道,就像在现实生活中-如果敌人的手被触摸,他不应该受到伤害,只是在高强度或高速度)什么是最好的解决方案?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-04 04:08:50

因为你玩家的拳头不受物理系统的控制,所以你不可能像正常的刚体那样读取玩家的手的速度。话虽如此,你仍然可以计算速度,并在一个脚本中处理所有你想要做的事情。

下面是一个例子:

代码语言:javascript
复制
[RequireComponent(typeof(DamageScript))]
public class HandSpeedMonitor : Monobehaviour
{
    public float threshold;
    DamageScript damageScript;
    Vector3 lastPos;

    public void Awake()
    {
        damageScript = this.GetComponent<DamageScript>();
    }

    public void Start()
    {
        lastPos = this.transform.position;
    }

    public void Update()
    {
        float velocity = (lastPos - this.transform.position).magnitude / Time.deltaTime;
        if(!damageScript.enabled && velocity > threshold)
            damageScript.enabled = true;
        else if(damageScript.enabled)
            damageScript.enabled = false;
    }
}

然而,由于.magnitude是一个昂贵的调用,您可能需要考虑将您的“阈值”存储为速度平方的"sqrThreshold“,并使用.sqrMagnitude,因为它删除了向量数学的平方根部分(节省了处理时间)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58224189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档