Unity版本:Unity 5.6.2f1 Personal(64bit)
效果如下:
一、创建平面对象和Cube对象
首先创建1个平面plane对象和2个Cube对象,一个在上,一个在下,以确保上面的能够掉下来碰撞到下面的。Cube要加上Rigibody,勾选上Use Gravity。如下图所示:
二、实现改变材质的脚本和触发逻辑
触发逻辑要根据实际情况来实现。
本例的触发逻辑非常简单粗暴:给地板上的绿色Cube加个名为"Box"的tag,当上面的红色Cube跟别的游戏对象发生碰撞时,改变材质:
1.当碰撞到tag为"Box"的游戏对象,例如绿色Cube,改变到绿色材质。
2.当碰撞到其他游戏对象,改变到蓝色材质。
第一步:将绿色Cube的tag修改成"Box":
(一开始没有Box这个tag,要选择Add Tag进行新增)
第二步:给上面的红色Cube加上以下脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeMaterial : MonoBehaviour {
public Material[] material;
Renderer rend;
// Use this for initialization
void Start () {
rend = GetComponent<Renderer> ();
rend.enabled = true;
rend.sharedMaterial = material [0];
}
void OnCollisionEnter (Collision col)
{
if (col.gameObject.tag == "Box") { //如果撞到的游戏对象是Box
rend.sharedMaterial = material [1];
} else {
rend.sharedMaterial = material [2];
}
}
// Update is called once per frame
void Update () {
}
}
三、修改游戏对象的材质列表
本例中要改变的是红色Cube的材质。对红色Cube,添加完上述脚本后,将可能用上的3种材质按顺序加进去,分别为红色、绿色和蓝色材质。
参考资料:Scripting: Change Material of an Object | Unity Tutorial