Articles of 游戏对象

unity3d中的游戏对象位置问题

我有一组对象放置在同一层,除了一个以外,所有的对象都是不可见的。 当我拖动一个对象到选定区域时,当前拖动的对象被销毁,并且对象应该被加载到相同的位置。 我已经添加了多边形对撞机和刚体(SET FIXED ANGLE)到所有对象。 这里的问题是:当我拖动对象到选定区域时,对象被破坏,下一个对象被加载,但是当对象被加载时位置不同。 public Vector3 ObjectSpawnPosition1; public GameObject obj1; void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.name == "SemiCircle") { if (Input.GetMouseButtonUp(0)) { scoreCalculate.currentScore += 10; Destroy(gameObject); Instantiate(obj1, ObjectSpawnPosition1, Quaternion.identity); obj1.renderer.enabled = true; } } }

碰撞在不同的层面

我在屏幕上有一个名为gameObject1的游戏对象。 它拥有一个名为红色的图像。 当我在gameObject1上拖动一个叫做“动物”的图像时,碰撞会正确地发生,并且破坏同一图层中的“动物”。 然后我增加分数,但是当我在gameObject2上拖动一个名为“animal”的图像时,我想减less我的分数(没有碰撞)。 我知道不同的碰撞不会发生。 void OnCollisionEnter2D(Collision2D col) { if(Input.GetMouseButtonUp(0)) { if (col.gameObject.name == "Semi arid" ) { //obj1.rigidbody.isKinematic = false; scoreCalculate.currentScore+=10 ; Destroy(gameObject); //Debug.Log ("Scored1…………"+scoreCalculate.currentScore); Instantiate(obj1, ObjectSpawnPosition1, Quaternion.identity); Instantiate(green, ObjectSpawnPosition1, Quaternion.identity); obj1.renderer.enabled = true; green.renderer.enabled = true;}

根据可视性管理游戏对象

我试图用2D创建一个冒险游戏,我正在考虑地图管理/对象。 以下是我在建模方面的想法: 现在,我想根据玩家的位置来创建实体,以避免高内存和CPU负载。 目标是在屏幕外和远离角色时将对象从内存中移除(目前,我正在考虑像视口两倍的东西): 这张照片显示: 注意 :图像中的红点是实体。 你有什么事情呢? 有更好的技术吗?

如何在Swift中使用具有不同属性值的对象?

我认为这是一个非常基本的问题,为了更容易理解我不明白的地方,我使用了下面的场景。 场景:我有两艘或两艘以上的战舰。 他们应该有不同的属性,如名字,生命值和得分。 我想射击他们并获得分数。 我的方法:我扩展了SKSpriteNode来获得我自己的ship class 。 而当我发射子弹碰撞检测会告诉我什么时候命中。 import SpriteKit class ship: SKSpriteNode { var hitpoints: Int = nil? var score: Int = nil? func createPhysicsBody(){ self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width / 2) self.physicsBody?.dynamic = true … } } func didBeginContact(contact: SKPhysicsContact){ switch(contact.bodyA.categoryBitMask + contact.bodyB.categoryBitMask){ case shipCategory + bulletCategory: contactShipBullet(contact.bodyA, bodyB: contact.bodyB) break; default: break; } […]

如何启用和禁用游戏对象上的脚本?

这个昨天简短的工作,我相信我做了一些搞砸了。 我input的所有内容都是正确的。 因此,它必须是代码。 我想换玩家。 虽然红色立方体的脚本启用,并可以移动脚本下移动,我希望蓝色立方体移动脚本被禁用,反对。 你能给我一些见解,我做错了什么? 谢谢,麻烦您了!! using UnityEngine; using System.Collections; public class PlayerMovementScript : MonoBehaviour { public float speed = 2f; public float height = 2f; public Component playerMovement; public GameObject redCube; public GameObject blueCube; void Start() { var bc = blueCube.GetComponent<PlayerMovementScript>(); bc.enabled = !bc.enabled; } // Update is called once per frame void […]

Unity3D – GameObject作为一个静态函数

新手Unity3D / C#开发人员在这里。 我在5月/ 6月的大学度假期间尝试过学习Unity3D,遇到了一个问题: 代码1: CameraObj returnVoid; void Start () { returnVoid = GameObject.Find ("Main Camera").GetComponent<CameraObj> (); returnVoid.ComponentType (); } 代码2: GameObject returnDirectLight; void Start () { returnDirectLight = GameObject.Find ("Directional Light"); Debug.Log (returnDirectLight.GetComponent<DRLight>().directionString); } CameraObj是我的自定义组件。 据我所知, GetComponent实际上是一个公共方法。 我理解代码2背后的逻辑。我不明白的是代码1. GetComponent如何在GetComponent变成一个静态函数? 它在我的CameraObj类中变得抽象了吗?

游戏组件和内存管理

我把一个基于组件的游戏引擎的运作结合在一起,因此已经深入地阅读了游戏引擎架构的许多方面和相当多的不同编程风格/做和不做的自以为是的理论。 等等。 目前,我非常喜欢处理像小数据结构这样的组件,并且有更大的子系统适当地处理这些数据。 因此,“游戏对象”更多的是将这些基于结构的组件绑定到具有各种属性的松散定义的对象中的GUID。 所以我的问题,或目前的delima是如何存储这些不同的组件,我似乎有两个竞争的想法。 处理存储这些组件的简单方法是让每个子系统都作为一个工厂类来创建并存储在子系统维护的哈希表中。 所以Renderer会有一个方法可以产生和存储给定GUID和一些input参数的Renderable组件。 每当一个对象或对象组件从游戏中移除时,每个子系统都可以被发送消息,并且该子系统可以毫无困难地删除相应的组件。 除此之外,同一types的组件被组合在一起,因为这些组件都是相同的大小,这使得一个相当该死的清理内存管理。 我没有看到使用std :: vector或某种哈希表来包含这些元素的问题。 我用这种方法的问题是,它显着分割(全部)“游戏对象”。 突然间,一个给定物体的位置分量离物理组件很远。 这看起来像一个性能的噩梦,查找任何其他组件成为一个caching未命中等,这使我到选项#2 … 我提出的另一种方法是保持工厂是子系统的一部分。 Renderer仍然会生成Renderables ,但是Renderer不会负责存储这个组件,而是通过一个专门的系统(比如一个内存管理器)为它提供一个位置来写组件结构作为input参数。 这里的优点是属于一个特定的GUID的组件可以在连续的存储器中(至less在理论上)组合在一起,从而为另一个组件(比如Physical想要改变Position组件)所需的date可能已经存在于处理器中由于caching行的影响而导致的caching。 我在做这件事情时看到的(巨大的)缺点是管理必要的记忆,将这些不同大小的组件分组在一起,这对我来说听起来像一场噩梦。 所以我想问的是,你们觉得呢? 有没有一个真正聪明的第三个选项,我没有想到,或者我是否疯狂甚至关心caching未命中? 在这种情况下,简单的方法就是正确的方式等等。 谢谢,-Cody

如何使装备物品影响装备?

我在Objective-C中做了一个基于文本的小冒险。 我有一个Player类,有四个属性,代表玩家的属性( strength , agility , stamina和intelligence )。 我也有一个Weapon类。 我的目标是在游戏中放置一个武器,只要装备了这个武器,就会增加玩家的属性。 我怎样才能以面向对象的方式实现这一点? 我可以在Weapon类中增加一个方法来增加玩家的属性,只有当一个标志被设置为true时(我在创建这个特殊的武器的时候设置为true,并且为我创建的所有其他武器保留假) ),但是这看起来有点混乱,并不特别面向对象。 我最近了解到装饰devise模式。 我能用decorator来完成我的目标吗?

如何将脚本应用到Unity中的多个对象?

在Unity中,我有近200个或更多的对象。 我希望将单个脚本应用于所有这些对象。 我是Unity的初学者和学习脚本。 编辑 :在编辑场景本身的时候。

如何检查摄像机是否可以畅通无阻地查看GameObject?

我想检查GameObject是否对相机可见。 renderer.isVisible -method只检查相机是否转向物体,而不是如果它们之间有任何东西(如墙壁)。 我怎样才能检查对象是否真的可见 ?