Unity3D怎么让地形中随机出现物体?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D怎么让地形中随机出现物体?相关的知识,希望对你有一定的参考价值。

想做一个小人加金币的游戏交大作业,学渣表示不会T-T
怎么能让金币在地形中随机出现?小人加到后自动消失?
跪求大神帮忙。。。谢谢

public GameObject prefab1;//先把金币做成预设物
GameObject go= (GameObject)Instantiate(prefab1);//用这句创建这个预设物
go.transform.position用来设置位置
Destroy (名字 );//用来删除金币
int b=Random.Range(1,10);//随机数

我想这些有很多你都已经知道了,个人认为用这些函数应该是能够做出加金币的效果的吧。
新手,如见解不正确,请指正,多谢。追问

谢谢,超级有用

追答

我是新手,正在学Unity3D,与君共勉吧。

参考技术A 这个是怎么回事啊追问

想让cube在地形上随机出现,求代码

unity3d中c#如何修改物体局部的颜色

shader也都是改变整个的颜色,如果只是想改变一个局部范围内的颜色该如何做

参考技术A 修改天空盒颜色的例子(C#):
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour
public Color colorStart = Color.blue;
public Color colorEnd = Color.green;
public float duration = 1.0F;
void Update()
float lerp = Mathf.PingPong(Time.time, duration) / duration;
RenderSettings.skybox.SetColor("_Tint", Color.Lerp(colorStart, colorEnd, lerp));



修改天空盒材质的例子(C#):
// 加载所有 skybox 纹理
Texture2D sbFront = Resources.Load("Texture/Skybox/skybox_Front") as Texture2D;
Texture2D sbBack = Resources.Load("Texture/Skybox/skybox_Back") as Texture2D;
...

// 创建新的 SkyBox 材质
Material mySkyBoxMat = new Material(Resources.Load("Shaders/myOwnSkyboxShader") as Shader);

// 将所有纹理添加到材质中
mySkyBoxMat.SetTexture("_FrontTex", sbFront);
mySkyBoxMat.SetTexture("_BackTex", sbBack);

// 设置RenderSettings skybox 变量
RenderSettings.skybox = mySkyBoxMat;

稍微完整些的例子(C#):
using UnityEngine;
using System.Collections;

public class SkyboxSetter : MonoBehaviour

// 创建Skybox材质
public static Material CreateSkyboxMaterial(SkyboxManifest manifest)

Material result = new Material(Shader.Find("RenderFX/Skybox"));
result.SetTexture("_FrontTex", manifest.textures[0]);
result.SetTexture("_BackTex", manifest.textures[1]);
result.SetTexture("_LeftTex", manifest.textures[2]);
result.SetTexture("_RightTex", manifest.textures[3]);
result.SetTexture("_UpTex", manifest.textures[4]);
result.SetTexture("_DownTex", manifest.textures[5]);
return result;


public Texture2D[] textures;

void OnEnable()

SkyboxManifest manifest = new SkyboxManifest(textures[0], textures[1], textures[2], textures[3], textures[4], textures[5]);
Material material = CreateSkyboxMaterial(manifest);
SetSkybox(material);
enabled = false;


// 材质加到天空盒
void SetSkybox(Material material)

GameObject camera = Camera.main.gameObject;
Skybox skybox = camera.GetComponent<Skybox>();
if (skybox == null)
skybox = camera.AddComponent<Skybox>();
skybox.material = material;



public struct SkyboxManifest

public Texture2D[] textures;

public SkyboxManifest(Texture2D front, Texture2D back, Texture2D left, Texture2D right, Texture2D up, Texture2D down)

textures = new Texture2D[6]

front,
back,
left,
right,
up,
down
;



代码测试结果:
按照RenderSettings.skybox = mySkyBoxMat;方式设置并没有成功,用下面例子中的SetSkybox运行成功。

需要注意的是,Texture目录需要放在Resources目录下,最终的目录结构是这样的:
项目主目录/Assets/Resources/Textures/Skybox/skybox_Front.jpg
参考技术B 我现在也需要这样的效果,局部变色,请问你解决了吗? 参考技术C 答非所问的人能不能再少一点

以上是关于Unity3D怎么让地形中随机出现物体?的主要内容,如果未能解决你的问题,请参考以下文章

unity3d里用脚本改变一个物体的大小比例怎么写脚本谢谢?

unity3d 中如何让一个物体一端固定,另一端随另一物体运动,就像弹簧一样

unity3d中c#如何修改物体局部的颜色

unity3D 地形里没有光这个选项,接受不了影子。难道破解版都没有影子这个功能了吗

Unity3D自带功能:地形(Terrain)

unity3D中,给物体添加刚体后,为啥不是掉在地面上,而是穿过地形一直往下落呢?