标签: unity5

Unity - 使球停止弹跳/不要弹到底部

目前我正在尝试在 Unity 中创建一个栩栩如生的乒乓球。

在此处输入图片说明

到目前为止,没有问题。我分配了一个刚体和一个球体碰撞器。球体对撞机有一个材质,我将其设置为 0.85(显然是乒乓球在标准实心地板上的值)。

到目前为止,球弹得很好,但是当它即将静止时,问题就来了。

最初,球会弹得越来越低/越来越快,直到它最终“啪”到地上(错过了人们期望看到的最后几次弹跳)。

在此处输入图片说明

我读到这是因为物理设置中的“反弹阈值”。我认为默认值是 2.0,所以我将其更改为 0.6。

现在球不会被弹到地上,而是不会从最后一个小高度停止弹跳。

您可能可以从这张图片中参考,球不断弹跳的高度(球的比例应该非常精确到 Unity 公制比例系统)

在此处输入图片说明

我实际上不明白为什么会这样,因为弹力已经设置为 0.85,它不应该每次弹跳时将它的高度降低 15% 吗?

附加信息:我已经尝试了一些东西,也给地板一个物理材料,将弹性设置为 0,调整摩擦参数等。但似乎没有任何影响。

我怎样才能完成栩栩如生的球最后一次弹跳,并让它更自然地静止?

任何帮助将不胜感激。

提前致谢并致以最诚挚的问候,

莉拉Q

unity-game-engine game-physics unity5

3
推荐指数
1
解决办法
5267
查看次数

unity YAMLMerge 错误

我试图通过从 SourceTree 启动 Unity YAML 合并工具来合并单个场景,但出现此错误:

无法在 [Path to mergespecfile.txt] 中找到处理扩展名 tmp 的合并工具

. 奇怪的是,昨天和前几天的合并工作都很好。在网上搜索并没有得到更多的澄清。任何人有任何想法?

yaml atlassian-sourcetree unity5

3
推荐指数
1
解决办法
3161
查看次数

默认 Unity Sky 框已更改?

因此,每当我在 unity3d 中加载新项目时,天空盒默认为蓝色纯色,与最初带有云彩和天空中的太阳的天空盒不同,如何将其设置回原来的默认天空盒一个团结带来的

提前谢谢你 ;)

更新:这是它的外观图片

[它看起来如何[1]

vs 它应该是什么样子:

它应该看起来如何

unity-game-engine skybox unity5

3
推荐指数
1
解决办法
5840
查看次数

Unity:如何将未知脚本动态附加到游戏对象(自定义编辑器)

我目前正在为 Unity 编辑器(自定义检查器和自定义窗口)制作一个系统,该系统将自动化并使我们正在制作的游戏的美术师的工作更容易,但我遇到了障碍。

我试图找到一种方法,通过编辑器文本字段输入和 GUI 按钮动态添加未知脚本到场景中的游戏对象。艺术家/程序员将在文本字段中键入脚本的名称,它将搜索并添加到游戏对象中,但我不知道如何进行此操作,特别gameObject.AddComponent()是因为 Unity 5.3 中的某些功能已被弃用

这是我尝试做的:

public string scriptname;
GameObject obj = null;
scriptname = EditorGUILayout.TextField("Script name:", scriptname, GUILayout.MaxHeight(25));
if (GUILayout.Button("Attach script"))
{
    //search for the script to check if it exists, using DirectoryInfo
    DirectoryInfo dir = new DirectoryInfo(Application.dataPath);
    FileInfo[] info = dir.GetFiles("*.*", SearchOption.AllDirectories);
    foreach (FileInfo f in info) // cycles through all the files
    {
        if(f.Name == scriptname)
        {
            //attaches to the gameobject (NOT WORKING)
            System.Type MyScriptType = System.Type.GetType(scriptname + ",Assembly-CSharp"); 
            obj.AddComponent(MyScriptType);
        } …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unity5

3
推荐指数
1
解决办法
4854
查看次数

如何在 Unity 中更改场景

    if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
    {
        //Call What Happens Here
    }
Run Code Online (Sandbox Code Playgroud)

我想用一些将播放器发送到主菜单(场景 0)的代码替换注释。顺便说一下,这是 JavaScript,我使用的是 Unity 5.6。完整代码如下。

    #pragma strict

    var Player : Transform;
    var MoveSpeed = 4;
    var MinDist = 3;
    var MaxDist = 20;

    function Start()
    {

    }

    function Update ()
    {
        transform.LookAt (Player);
        if(Vector3.Distance(transform.position,Player.position) >= MinDist)
        {
            transform.position += transform.forward * MoveSpeed*Time.deltaTime;

            if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
            {
                //Call What Happens Here
            }
        }
    }    
Run Code Online (Sandbox Code Playgroud)

unity-game-engine unityscript unity5

3
推荐指数
1
解决办法
2万
查看次数

碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)

我是品牌新Unity3D 5,我有我的第一个2D游戏,涉及碰撞检测的问题。我的移动物体是一个球,有 Rigidbody2D 和 CircleCollider2D。我的固定“碰撞器或触发器”是一个 BoxCollider 并附有一个脚本。OnTriggerEnter2D 应该在球穿过固定框时触发。我也试过 OnCollisionEnter2D 但我相当肯定我应该使用 OnTriggerEnter2D 因为我的固定框被标记为触发器。

我的代码:

public class LoseCollider : MonoBehaviour {

public LevelManager levelManager;

void OnCollisionEnter2D(Collision2D collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter2D(Collider2D trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}

void OnCollisionEnter(Collision collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter(Collider trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在测试所有变体,但没有调用任何变体。这是我的对象的 Unity 属性:

球

在此处输入图片说明

我确定我错过了一些简单的东西,如果有人可以请向我指出。

c# 2d collision-detection unity-game-engine unity5

3
推荐指数
1
解决办法
2017
查看次数

无法从 Visual Studio 向项目添加基本类

我曾经能够在我的 Unity 解决方案中从 Visual Studio 添加基本的空类。但该选项甚至不再出现。不久前我更新到了 VS2017,也许这就是问题所在,或者现在更新的 Unity 与 VS 集成“更好”。我总是可以从 unity 添加一个 C# 脚本,但我喜欢从 VS 添加类,如果我能恢复那个选项,我会很高兴。

无法添加基本项目类型

ide unity-game-engine visual-studio unity5 visual-studio-2017

3
推荐指数
1
解决办法
3102
查看次数

仅在一侧缩放游戏对象

我已将多维数据集添加到场景,并且缩放并放置到位置(0,0,0)。我正在使用附加到多维数据集的代码扩展该多维数据集

IEnumerator Start() {
    StartCoroutine("DoSomething", 2.0F);
    yield return new WaitForSeconds(1);
    StopCoroutine("DoSomething");
}

IEnumerator DoSomething(float someParameter) {
    while (true) {
        transform.localScale += new Vector3(0, 0.1f, 0);
        yield return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是多维数据集在两边都缩放,从顶部到底部。我想使用相同的因子进行缩放,但是Cube的底部保持在相同的位置。我试图在transform.localScale += new Vector3(0, 0.1f, 0);和之间设置新的头寸,yield return null;但我不知道如何获得确切的金额。(我试图阅读

Mesh planeMesh = gameObject.GetComponent<MeshFilter>().mesh;
        Bounds bounds = planeMesh.bounds;
        bounds.size.y;
Run Code Online (Sandbox Code Playgroud)

缩放之前和之后并添加到

transform.position.yboundsAfter.size.y和之间的区别 boundsBefore.size.y

但它移动太多。

如何解决呢?

c# unity-game-engine unity5

2
推荐指数
1
解决办法
2269
查看次数

来自eventTrigger OnPointerDown的连续输入

就像Input.GetKey()键盘一样,有没有办法从UI按钮事件触发器中 获取连续的输入OnPointerDown?因为对于带有动画的运动控件,其输出非常奇怪?我必须一次又一次单击它,我不想!

如果答案是手动跟踪,那么该怎么做?

c# unity-game-engine unity3d-2dtools unity5

2
推荐指数
1
解决办法
1514
查看次数

使用Unity 3D时是否有任何限制?

我仍然是3D编程/游戏开发领域的新手.我使用Unity与MonoDevelop,主要使用由Blender制作的模型,纹理等.编程逻辑是用C#完成的.

我的主要问题是:Unity是否有可能实现一切?我知道这是一个广泛的问题,但是"一切"我的意思就像现在几乎所有3D游戏(或2D游戏)一样,例如:

  • 介绍/过场动画(例如到达地图上的特定点)
  • 菜单/动画菜单组件中的主菜单/配置
  • 可配置的声音/图形选项
  • 多个地图/场景,按需加载地图/场景/游戏对象
  • 音效,背景音乐
  • 等等

再次抱歉,我知道这是一个广泛的问题,但我无法摆脱Unity中"无法做我想做的一切"的感觉(如果你知道我的意思).

例如,我可以用Blender/Unity完全编写游戏,例如Call of Duty MW2或Super Mario 64吗?(我知道那些可能是使用他们自己的游戏引擎等,但我只是指构成整个游戏的所有组件,基本上).

或者以其他方式制定,任何人都可以说"哦,这是一个好主意,但你无法用Unity实现这一点",或类似的东西.如果是,为什么?

谢谢!

3d unity-game-engine unity5

2
推荐指数
1
解决办法
1263
查看次数