Tag: unity3d

使用BoxCastAll检测两个对象之间是否有任何对象

在开发移动3D游戏的过程中,我遇到了一个盒子投射问题。 我想检查我的玩家和他的目标之间的路径,以避免他穿过环境物体(他没有附着刚体并且只能在特定点之间移动)。 这是我用来检查的代码: private bool CheckPath (Vector3 position, Vector3 target) { Vector3 center = Vector3.Lerp(transform.position, target, 0.5f); Vector3 halfExtents = new Vector3(1, 1, (transform.position – target).magnitude) / 2; Quaternion rotation = Quaternion.LookRotation((transform.position – target).normalized); RaycastHit[] rhit = Physics.BoxCastAll(center, halfExtents, (transform.position – target).normalized, rotation); bool result = rhit.All(r => r.collider.tag != “Environment”); DebugUtilities.BoxCastDebug.DrawBox(center, halfExtents, rotation, result […]

Unity 3d启用鼠标指针作为事件触发器的指针进入/退出

我有一个非常基本的问题,即将鼠标光标作为指针。 我试图通过简单的代码编写指针输入事件,指针进入退出事件工作。 但是当我使用Event Trigger的PointerEnter或PointerExit事件时,不会触发操作。 我是否必须启用某些东西来激活我的鼠标作为Unity 3d指针?

从Unity ARCore保存相机图像

这与此文章相关, 从Unity ARCore将AcquireCameraImageBytes()保存为存储为图像 我尝试了@JordanRobinson提到的步骤我有类似的问题只看到一个灰色方块。 我不断重新阅读他的更新,我不清楚第2步(创建纹理阅读器)如何与第3步相关联。我添加了更新函数来调用Frame.CameraImage.AcquireCameraImageBytes。 我想错过了什么。 我觉得我很亲密,因为它保存了一个图像(只是一个灰色的图像:-)任何你能提供的帮助将不胜感激 这是我的代码 private Texture2D m_TextureRender; private TextureReader m_CachedTextureReader; void Start () { m_CachedTextureReader = GetComponent(); m_CachedTextureReader.OnImageAvailableCallback += OnImageAvailable; QuitOnConnectionErrors (); } void Update () { Screen.sleepTimeout = SleepTimeout.NeverSleep; using (var image = Frame.CameraImage.AcquireCameraImageBytes()) { if (!image.IsAvailable) { return; } OnImageAvailable(TextureReaderApi.ImageFormatType.ImageFormatColor, image.Width, image.Height, image.Y, 0); } } private void OnImageAvailable(TextureReaderApi.ImageFormatType […]

Unity,C# – 在碰撞输入时无法使对象从当前y位置向下移动?

我对动画有一个令人沮丧的问题。 我有一个产生平台的预制件,我附加了动画,并且当玩家物体落在它上面时,我想将平台从其原始位置向下移动,当玩家坐在它上面时保持向下,然后向后移动到当玩家退出碰撞(即跳出)时的原始位置。 我创建了我的上下动画,并将它们设置为使用动画窗口播放ONCE。 然后我将平台拖到我的项目中,使其成为预制件并将其插回到我的spawn脚本中。 当玩家碰撞(落在平台上)时,我在这里调用向下动画: void OnCollisionEnter (Collision col) { GameObject platform = col.gameObject; //platform.GetComponent ().Play (“down1”); if (!playedAnim1) { platform.GetComponent ().Play (“down1”); playedAnim1 = true; } touchingPlatform = true; Debug.Log (“entering platform”); } void OnCollisionExit (Collision col) { playedAnim1 = false; GameObject platform = col.gameObject; //platform.SetActive (false); //platform.transform.position += new Vector3 (0f, -1f, 0f); […]

Unity:用于突出显示的光线投射不会检测到对象

我按照本教程选择了对象。 但是,当我导入我的.obj资产并尝试选择/突出显示它们时,看起来raycaster不会接收它们。 当我的鼠标点击我的.obj对象时没有任何反应。 我添加了必要的对撞机(箱式对撞机甚至网格对撞机),没有任何反应。 我究竟做错了什么? 我没有更改提供的源代码。 我刚刚将目标文件导入到场景中并添加了必要的物理。 我想做的就是突出显示我的.obj文件onMouseDown。 AppRoot.cs: using UnityEngine; using System.Collections; using System.Collections.Generic; public class AppRoot : MonoBehaviour { /////////////////////////////////////////////////////////////////////////// #region Variables // materials for highlight public Material SimpleMat; public Material HighlightedMat; // rotate / pan / zoom object private TransformObject mTransform; // TransformObject implements rotate / pan / zoom private GameObject mGOFlat; […]

试图使一个对象看到Unity中的另一个对象

Hia我一直试图让一个对象“Tower”看看对象“Enemy”但是我一直在收到错误“非静态字段,方法或属性’Enemy.position’需要一个对象引用“ 这是敌人的类,我试图定义敌人的位置以供塔参考。 有谁知道如何解决这个问题? 谢谢 public class Enemy : MonoBehaviour { public float speed = 1.5f; public Vector3 position; private Vector3 target; void Start() { target = transform.position; } void Update() { if (Input.GetMouseButtonDown(0)) { target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.z = transform.position.z; } transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); position = GameObject.Find(“enemy”).transform.position; } } 这是塔的类,其中“var lookPos […]

将2dtexture从库存拖到游戏中

好吧,所以我正在制作移动2D游戏。 您可以在游戏中从广告资源中拖出矩形或圆圈。 我希望如何设置:当我将库存中的一个项目拖入游戏时,在顶部或右侧是具有对象/纹理的库存。 然后它从库存中删除该项目。 之后,商品库存将全部向上移动1个。 这样第一个插槽就被占用了。 我怎么做这个工作? 请有人帮我思考或给我一些例子吗? 提前致谢!

Unity IAP包位于何处?

我目前正在编写一个编辑器脚本,这将简化我在我的游戏的免费增值和付费版本之间的转换。我想手动导入当我单击服务 – >应用程序内购买下的导入按钮时导入的.unitypackage文件。 我知道函数AssetDatabase.ImportAsset(path)但我首先需要包的路径。 提前致谢!

无需播放即可捕获音频

我正在尝试使用麦克风并处理捕获的音频。 我设法做到了这一切,但我遇到了问题……我拍摄的音频会自动播放给用户,我不希望这样。 audioSrc.clip = Microphone.Start(null, true, 1000, 44100); while (!(Microphone.GetPosition(null) > 0)) { } audioSrc.Play(); 我试图禁用音频监听器并降低音频源的音量,但这不起作用。 任何人都知道如何在不回放的情况下捕获音频? 编辑1: void Start() { GameObject a = new GameObject(“AudioSource”); audioSrc = a.AddComponent(); Instantiate(a); string deviceName = Microphone.devices[0]; audioSrc.clip = Microphone.Start(deviceName, true, 1000, 44100); audioSrc.volume = 0; while (!(Microphone.GetPosition(null) > 0)) { } audioSrc.Play(); } void Update() { audioSrc.GetSpectrumData(spectrum, […]

Unity private唤醒更新和启动方法如何工作?

Unity如何调用场景背后的Awake,Update和Start方法? 他们没有访问修饰符表示它们是私有方法,并且它们不使用new或override之类的东西,那么Unity框架如何找到调用它们的方法? 在一个相关的问题上,是否有任何特殊原因没有使用虚拟方法? 编辑:对于那些不熟悉Unity脚本的人来说,这是他们通常出现的方式: public class MyClass : MonoBehaviour{ void Start(){ } void Awake(){ } void Update(){ } } 我不明白的是框架如何找到并自动调用每个脚本的那些方法,从各方面看,它们看起来只是私有方法