目前我正在尝试在 Unity 中创建一个栩栩如生的乒乓球。
到目前为止,没有问题。我分配了一个刚体和一个球体碰撞器。球体对撞机有一个材质,我将其设置为 0.85(显然是乒乓球在标准实心地板上的值)。
到目前为止,球弹得很好,但是当它即将静止时,问题就来了。
最初,球会弹得越来越低/越来越快,直到它最终“啪”到地上(错过了人们期望看到的最后几次弹跳)。
我读到这是因为物理设置中的“反弹阈值”。我认为默认值是 2.0,所以我将其更改为 0.6。
现在球不会被弹到地上,而是不会从最后一个小高度停止弹跳。
您可能可以从这张图片中参考,球不断弹跳的高度(球的比例应该非常精确到 Unity 公制比例系统)
我实际上不明白为什么会这样,因为弹力已经设置为 0.85,它不应该每次弹跳时将它的高度降低 15% 吗?
附加信息:我已经尝试了一些东西,也给地板一个物理材料,将弹性设置为 0,调整摩擦参数等。但似乎没有任何影响。
我怎样才能完成栩栩如生的球最后一次弹跳,并让它更自然地静止?
任何帮助将不胜感激。
提前致谢并致以最诚挚的问候,
莉拉Q
我试图通过从 SourceTree 启动 Unity YAML 合并工具来合并单个场景,但出现此错误:
无法在 [Path to mergespecfile.txt] 中找到处理扩展名 tmp 的合并工具
. 奇怪的是,昨天和前几天的合并工作都很好。在网上搜索并没有得到更多的澄清。任何人有任何想法?
因此,每当我在 unity3d 中加载新项目时,天空盒默认为蓝色纯色,与最初带有云彩和天空中的太阳的天空盒不同,如何将其设置回原来的默认天空盒一个团结带来的
提前谢谢你 ;)
更新:这是它的外观图片
[![它看起来如何[1]](https://i.stack.imgur.com/ZaOHM.png)
vs 它应该是什么样子:
我目前正在为 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) 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) 我是品牌新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 属性:
和
我确定我错过了一些简单的东西,如果有人可以请向我指出。
我曾经能够在我的 Unity 解决方案中从 Visual Studio 添加基本的空类。但该选项甚至不再出现。不久前我更新到了 VS2017,也许这就是问题所在,或者现在更新的 Unity 与 VS 集成“更好”。我总是可以从 unity 添加一个 C# 脚本,但我喜欢从 VS 添加类,如果我能恢复那个选项,我会很高兴。
ide unity-game-engine visual-studio unity5 visual-studio-2017
我已将多维数据集添加到场景,并且缩放并放置到位置(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
但它移动太多。
如何解决呢?
就像Input.GetKey()键盘一样,有没有办法从UI按钮事件触发器中 获取连续的输入OnPointerDown?因为对于带有动画的运动控件,其输出非常奇怪?我必须一次又一次单击它,我不想!
如果答案是手动跟踪,那么该怎么做?
我仍然是3D编程/游戏开发领域的新手.我使用Unity与MonoDevelop,主要使用由Blender制作的模型,纹理等.编程逻辑是用C#完成的.
我的主要问题是:Unity是否有可能实现一切?我知道这是一个广泛的问题,但是"一切"我的意思就像现在几乎所有3D游戏(或2D游戏)一样,例如:
再次抱歉,我知道这是一个广泛的问题,但我无法摆脱Unity中"无法做我想做的一切"的感觉(如果你知道我的意思).
例如,我可以用Blender/Unity完全编写游戏,例如Call of Duty MW2或Super Mario 64吗?(我知道那些可能是使用他们自己的游戏引擎等,但我只是指构成整个游戏的所有组件,基本上).
或者以其他方式制定,任何人都可以说"哦,这是一个好主意,但你无法用Unity实现这一点",或类似的东西.如果是,为什么?
谢谢!