unity 3.3,在物体上创建局部重力

2024-01-10

使用Unity 3.3。 Visual Studio Express 2010。和 C#。

我需要制作一个附加到对象的脚本。 该物体将创建自己的重力场,吸引-排斥环境中的所有物体。

不幸的是,由于统一物理学,我不确定如何做到这一点。我需要该对象来覆盖所有其他对象吗?我是否超越统一主要物理?这怎么样? 或者当它是一个简单的脚本时我是否使事情变得过于复杂?

不,我不想添加刚体,因此物体会因重力而下落,它必须创建更强大的重力。

Cheers

UPDATE!

public float radius = 5.0f;
public float power = -20f;
void Start () 
{
    //GameObject gravityObject = GameObject.FindGameObjectWithTag("GravitySwell");
    //gravSlime = gravityObject.transform;      
}

void Update () 
{
    Vector3 explosionPos = transform.position;
    Collider[] colliders = Physics.OverlapSphere(explosionPos, radius, 3);
    foreach (Collider hit in colliders)
    {
        if (!hit)
        {
            continue;
        }
        if (hit.rigidbody)
        {
            hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 3);
        }
    }
}
}

这是因为它增加了吸引物体的负力。 问题是,当该脚本分配的有吸引力的物体位于半空中时。任何被抓住的物体都会飞向它,但随后似乎会掉落,但又会再次被吸引。 有任何提示说明为什么吗?

我在想这样的事情,但什么也没发生:

Vector3 direction = this.transform.position - hit.transform.position;
direction.Normalize();
            //hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 3);
            //hit.transform.position.;
hit.rigidbody.isKinematic = false;
hit.rigidbody.AddForce(direction);

更新:: 好吧,我正在尝试这个,它似乎工作得很好,但它附着在被吸引的物体上。我也希望有人有更好的主意?

public void OnCollisionEnter(Collision col)
{
if(col.gameObject.tag == "GravitySwell")
{
    Debug.Log("i hit it!!!");
    rigidbody.velocity = Vector3.zero;
}
}

您可以做的就是添加一个 Unity 具有的碰撞盒作为组件添加到任何游戏对象,然后检查是否有任何东西进入该碰撞盒并向正在碰撞的对象添加力。如果需要,我会给你示例代码。

//edit

您可以将自己的重力添加到脚本中,并拥有自己的函数来添加力以使其朝某个方向移动,但只是为了让您知道可以更改摆脱的重力大小。身体确实

但如果你想利用自己的重力,你可以这样做

bool grounded = false;

void gravity(){

    gameObject.trasform.position.x -= gravity

}

void onCollisionEnter(collision c){
     //check and see what you are colliding with and if its the ground then set grounded to true and that will get you falling gravity. there is more you can do for more adv. gravity but ill leave that up to you
}

edit*

如果我明白你所说的粘在一个对象上,你需要做的就是使该对象成为需要粘在它上的对象的父对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity 3.3,在物体上创建局部重力 的相关文章

随机推荐

  • GitHub 源代码视图显示不再存在的提交

    两周前我重写了 GitHub 存储库的历史 rebase 和一些精选 并通过强制将其推回 GitHub git push f origin master 一切都很顺利 至少看起来是这样git log显示了正确的提交历史记录 我知道 重写历史
  • Java 在命令提示符处运行程序:无法找到或加载主类

    我正在尝试学习如何在 Windows 中仅使用命令行进行编译和运行 这是从根开始的目录树 D ActivityOne classes com wat sampleapp students StudentE class StudentMast
  • 在 Swift 中从整数数组创建 NSIndexSet

    我使用以下答案将 NSIndexSet 转换为 Int 数组https stackoverflow com a 28964059 6481734 https stackoverflow com a 28964059 6481734我基本上需
  • 为什么对无符号字符进行算术运算会将它们提升为有符号整数?

    许多类似问题的答案都指出 这是由于标准造成的 但是 我无法理解标准制定者做出这一决定背后的原因 据我了解unsigned char不以 2 的补码形式存储值 所以 我没有看到这样的情况XORing two unsigned chars会产生
  • Git缓慢枚举不存在的未跟踪文件

    我正在使用 git 对存储库进行源代码控制 最近它开始警告我在使用时枚举未跟踪的文件需要多长时间git status git status On branch my branch Changes not staged for commit
  • 将 SVN diff 格式化为并排比较

    我想生成一个并排的 SVN diff 而不是通常的 SVN diff 输出 有什么方法可以得到这种输出吗 您可以指定自定义 diff 命令 svn diff cmd diff extensions y diff 或者甚至可以使用 sdiff
  • Express 中的 Routes 文件夹

    当您创建 Express 应用程序时 您将获得一个路由文件夹 所有路由都注册在 app js 文件中 然而 发生的逻辑位于路由文件夹的文件中 这是其他框架中控制器文件夹的同义词吗 这是您应该添加请求 响应逻辑的位置吗 是的 与控制器文件夹有
  • OmniAuth 动态回调 URL 来验证特定对象而不是 current_user

    假设我有模型用户和项目 用户和项目与 HABTM 相关 我的设置实际上比这更复杂一些 但我认为就我的问题而言 这就可以了 现在 我想使用omniauth 来通过Twitter Facebook 等对特定项目进行身份验证 我已经弄清楚如何定义
  • 在 AngularJS 中保留换行符[重复]

    这个问题在这里已经有答案了 我正在开发一个使用 AngularJS 的应用程序 我的控制器看起来像这样 function TestCtrl scope scope lines var x 1 nvar y 2 我的观点是这样的 div p
  • IIS 中的无点文件产生 404 错误

    我已经成功使用 less我的开发卡西尼服务器中的文件 带有dotless http www dotlesscss org 几个星期 但当我发布到本地 IIS 服务器时 它们产生 404 错误 将我的调试器附加到 IIS 不会产生任何异常 我
  • 使用 CloudFront 将文件从 S3 发送到第三方 FTP 服务器

    我有一些文件存储在 S3 上 应用户请求 我想将它们传输到第三方站点的 FTP 服务器 Amazon S3 不支持 FTP SFTP 目前 我正在使用 S3 API 将文件从 S3 下载到本地服务器 然后将其传输到第三方 FTP 服务器 S
  • 在 YAML 中使用 R 代码或 Windows 用户变量(“%userprofile%”)?

    在我的 yaml 调用中我有 title r paste0 Test Done format Sys Date B Y output word document fig caption yes fig height 4 fig width
  • sql 检测更新触发器中修改的字段(sql server 2005)?

    在sql server 2005中 在更新触发器内部有一种方法可以找到由原始更新查询修改的字段 列的列表 我有一个包含 150 列的表 触发器内部需要知道是否仅更新了一个特定字段 并且没有修改其他字段 我可以编写一个很长的 sql 来比较
  • “webgl”和“实验性 webgl”之间的区别

    有些网站说您应该按以下方式初始化 webgl var gl c getContext webgl c getContext experimental webgl if gl alert This browser doesn t suppor
  • 最新 Android SDK 的 Dx 警告问题

    我更新了ADT 并重新安装了android SDK 之后我尝试运行一个程序 但它不起作用 控制台输出如下 Dx 警告 忽略匿名内部的 InnerClasses 属性 班级 org apache commons httpclient Http
  • 为什么“explain”返回的行不等于count()?

    mysql gt select count from table where relation title xxxxxxxxx count 1291958 mysql gt explain select from table where r
  • 根据 StartUp.cs 设置,Cookie 不会过期

    I have tried a plethora of solutions over the course of 2 days and still have not been able to get this to work What I w
  • 文本区域的 Request.Form 返回错误数据

    这是一个非常奇怪的错误 仅在 Firefox 3 5 中出现 我已经对 IE Safari 和 Chrome 进行了测试 没有发现任何错误 我正在使用本地主机 IIS 5 1 和旧的 asp 我已经能够将范围缩小到这个 例如 我在表单中有一
  • 以编程方式将一个 django CMS 插件替换为另一个

    我有一个网站 其中有许多指向 YouTube 的 Filer Video 插件 我发现该文件管理器不太适合响应式网站 它需要固定宽度 因此我没有修复它 而是编写了自己的简单小插件 可以轻松地为可变宽度布局嵌入 YouTube 所以现在我有很
  • unity 3.3,在物体上创建局部重力

    使用Unity 3 3 Visual Studio Express 2010 和 C 我需要制作一个附加到对象的脚本 该物体将创建自己的重力场 吸引 排斥环境中的所有物体 不幸的是 由于统一物理学 我不确定如何做到这一点 我需要该对象来覆盖