我正在开发一个项目,每当按下“ Q”按钮时,我就想创建一个加电效果,动画和角色都在工作,我的播放器周围还有我想要生成的生成对象(参见下图) 我的问题是如何在每个岩石(产卵对象)上添加不同的重力。
这是我当前正在使用的脚本。
/* Public Variables Declaration */
public Transform spawn_LocationForSmall;
public Transform spawn_LocationForMedium;
public Transform spawn_LocationForLarge;
public GameObject smallRock_Prefab;
public GameObject mediumRock_Prefab;
public GameObject largeRock_Prefab;
/* Private Variables Declaration */
private GameObject[] smallRocks_List;
private float posX, posY, posZ;
private bool smallCount = false;
private bool mediumCount = false;
private bool largeCount = false;
private bool small_CheckPos = false;
private bool medium_CheckPos = false;
private bool large_CheckPos = false;
void Start() {
//smallRocks_List = GameObject.FindGameObjectsWithTag("smallRock");
Create_Small_Rocks();
Create_Medium_Rocks();
Create_Large_Rocks();
}
private void Create_Small_Rocks(){
for(int i=0; i<=20; i++){
small_CheckPos = false;
posX = this.transform.position.x + Random.Range(-3.0f, 3.0f);
posY = this.transform.position.y + Random.Range(-3.0f, 3.0f);
posZ = this.transform.position.z + Random.Range(-3.0f, 3.0f);
if(posX > 3f && posY > 3f){
small_CheckPos = true;
}
if (small_CheckPos == true) {
Vector3 newPos = new Vector3(posX, posY, posZ);
GameObject createdObject = GameObject.Instantiate(smallRock_Prefab,
newPos, spawn_LocationForSmall.rotation) as GameObject;
createdObject.transform.parent = spawn_LocationForSmall.transform;
}
}
smallCount = true;
}
/* the other two functions are similar to this */
答案 0 :(得分:2)
我真的不知道您是否可以更改每个人的重力,但是您可以更改以下内容:
质量:
在“刚体”组件中,顶部有一个“质量”组件。正如Unity文档中所说:“较大的物体在碰撞时会推动较小的物体。想到一辆大卡车,撞到一辆小型汽车。”但是,它不会改变物体掉落的速度。
物理材料:
在对撞机组件中,您应该看到一个称为“材料”的东西。您可以创建新的物理材料并对其进行随机编辑,以使岩石与表面之间的摩擦力更高或更低,并以此方式改变岩石的弹性。
恒定力量:
如果您希望某些对象下降得更快,则可能需要使用此组件。我个人以前从未使用过此功能,但是它很适合您的问题。您可以使用此组件向对象施加恒定的力,因此,如果在岩石上施加一些向下的力,它将有助于它们更快地下降。
请让我知道这些方法是否有帮助。
答案 1 :(得分:1)
搜索粒子系统:
1)https://docs.unity3d.com/ScriptReference/ParticleSystem.html
2)https://www.youtube.com/watch?v=FEA1wTMJAR0&t=536s
3)https://www.youtube.com/watch?v=xenW67bXTgM