C# &引用;挤压;两个其他游戏对象之间的游戏对象?
我正试图“挤压”一个游戏对象,挤压器1和挤压器2都与之碰撞,并继续朝着对方移动。我希望缩小宽度(x比例),这样游戏对象的总面积保持在两个挤压器之间。因为我不是高级程序员,有人能为我提供一个随时可以部署的脚本吗C# &引用;挤压;两个其他游戏对象之间的游戏对象?,c#,unity3d,collision-detection,unity5,C#,Unity3d,Collision Detection,Unity5,我正试图“挤压”一个游戏对象,挤压器1和挤压器2都与之碰撞,并继续朝着对方移动。我希望缩小宽度(x比例),这样游戏对象的总面积保持在两个挤压器之间。因为我不是高级程序员,有人能为我提供一个随时可以部署的脚本吗 这个问题与这个问题密切相关:如果你只处理有三个分量(lengthX、lengthZ、lengthZ)的立方体,并且挤压总是垂直于曲面(意味着角度不会改变),那么当一个分量固定时,你基本上可以将问题简化为找到两个分量。在您的示例中,“宽度”设置为两个压缩立方体的面之间的距离,并且由于需要保留
这个问题与这个问题密切相关:如果你只处理有三个分量(lengthX、lengthZ、lengthZ)的立方体,并且挤压总是垂直于曲面(意味着角度不会改变),那么当一个分量固定时,你基本上可以将问题简化为找到两个分量。在您的示例中,“宽度”设置为两个压缩立方体的面之间的距离,并且由于需要保留面积,您可以推断高度
Area = Width * Height
Height = Area / NewWidth
Width = NewWidth
在三维空间中,你可以假设你要推导的两个分量相等
在我写这篇文章的时候,我认为你可以通过使用弹簧来正确地模拟它。正方形/立方体的每一条边都是一根连接各角的弹簧。应确定弹簧的粗糙度,l0应为您考虑的长度
弹簧方程的一点提示:
Let F be the force exerced by a spring
l0 the length of the spring at rest
l the current length of the spring
k a constant that tweak the force (equivalent to the roughness of the spring)
F = k * (l - l0)
如果挤压垂直于曲面,则弹簧本身不会保留该区域。在这种情况下,您将需要更新未取消规格标注的l0
- 它有长方体、压缩长方体、默认比例、速度和计数器
- 压缩框-->squzedBox对象,在设计上用蓝灰色签名
- box-->cubeProps对象,在设计上用绿色签名
- 默认比例-->将是您的默认比例。您可以在Start()方法中分配它。它有盒子的刻度
- 速度-->这是使立方体挤压或释放看起来像弹簧的值
using UnityEngine;
using System.Collections;
public class normalBoxScript : MonoBehaviour {
private int counter;
public GameObject box;
public GameObject squezeBox;
private Vector3 defaultScale;
public float speed;
// Use this for initialization
void Start () {
defaultScale = box.transform.localScale;
}
void Update () {
Debug.Log(counter);
updateScale();
}
void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
counter++;
}
}
void OnTriggerExit(Collider col)
{
if (col.tag == "Player")
{
counter--;
}
}
void updateScale()
{
if (counter == 2)
{
box.transform.localScale = Vector3.MoveTowards(box.transform.localScale, squezeBox.transform.localScale, speed);
}
else
{
box.transform.localScale = Vector3.MoveTowards(box.transform.localScale, defaultScale, speed);
}
}
}
结果呢
将
l
替换为y
并将l0
替换为ou
:)因为我不是高级程序员,我需要一个问题中提到的随时可以部署的脚本。Stackoverflow并不意味着让其他人为您编写所有代码。我们的想法是,您可以使用此建议,自己编写代码。为准备部署的脚本启动Open bounty worth+200 reputation!因为我不是一个高级程序员,所以我需要一个问题中提到的准备部署脚本!感谢您的编辑,但为了获得+200声誉,您必须提供一个随时可以部署的脚本。抱歉,我没有注意到这一点。你能把它转换成文本,这样我们就可以复制粘贴它了吗?@Dimitri我怎么能在这里共享文本?你只需要写一个看起来像这样的脚本。老兄,你需要提供更多的细节,比如-挤压器对象有刚体和碰撞器吗?他们是被剧本感动还是被物理感动?它们能一路移动并相互接触吗?如果您不提供有关需要脚本在其中工作的环境的任何详细信息,则无法拥有随时可以部署的脚本。请不要对我无礼,祝你好运!挤压器对象通过脚本移动,具有刚体和碰撞器,可以一直移动。请你写一个答案好吗@这是一个老问题。。这是完整的解决方案