如何在产卵物体上添加不同的重力?
How to add different gravity on spawning objects?
我正在做一个项目,我想在按下按钮 "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 */
我真的不知道你是否可以改变每个人的重力,但你可以改变这些东西:
质量:
在 Rigidbody 组件中,顶部有一个 "Mass" 组件。正如 Unity 文档中所说: "Higher mass objects push lower mass objects more when colliding. Think of a big truck, hitting a small car." 但是,它不会改变物体下落的速度。
物理 Material:
在 Collider 组件中,您应该看到名为 "Material" 的东西。您可以创建新的物理材料并随机编辑它们,使岩石与表面之间的摩擦力更高或更低,从而改变岩石的弹性。
恒力:
如果你想让一些物体下落得更快,你可能想要使用这个组件。我个人以前从未使用过它,但它看起来很适合您的问题。您可以使用此组件向物体添加恒定的力,因此如果您向岩石添加一些向下的力,它应该可以帮助它们更快地落下。
如果这些有帮助,请告诉我。
搜索粒子系统:
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
- 它允许您上传很酷的效果甚至预制件作为克隆对象(在本例中 rocks/asteroids)。它还能够控制产卵速度/数量/速度/(随机)大小/物理(重力)
我正在做一个项目,我想在按下按钮 "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 */
我真的不知道你是否可以改变每个人的重力,但你可以改变这些东西:
质量:
在 Rigidbody 组件中,顶部有一个 "Mass" 组件。正如 Unity 文档中所说: "Higher mass objects push lower mass objects more when colliding. Think of a big truck, hitting a small car." 但是,它不会改变物体下落的速度。
物理 Material:
在 Collider 组件中,您应该看到名为 "Material" 的东西。您可以创建新的物理材料并随机编辑它们,使岩石与表面之间的摩擦力更高或更低,从而改变岩石的弹性。
恒力:
如果你想让一些物体下落得更快,你可能想要使用这个组件。我个人以前从未使用过它,但它看起来很适合您的问题。您可以使用此组件向物体添加恒定的力,因此如果您向岩石添加一些向下的力,它应该可以帮助它们更快地落下。
如果这些有帮助,请告诉我。
搜索粒子系统:
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
- 它允许您上传很酷的效果甚至预制件作为克隆对象(在本例中 rocks/asteroids)。它还能够控制产卵速度/数量/速度/(随机)大小/物理(重力)