【发布时间】:2019-12-05 23:20:27
【问题描述】:
我最近开始学习如何编码,我真的很喜欢它,我有点卡住了,我希望得到你的帮助。我已添加:
- 一架飞机
- 角色控制器(在层次结构中命名为“Matt”)
- 一个立方体(它应该在按键时将颜色变为红色,并且如果 角色控制器与立方体上的对撞机发生碰撞)+脚本 附在立方体上
如果按下 R 键(有效)或播放器控制器与立方体的碰撞器发生碰撞,我希望 CUBE 更改它的颜色。
下面我的场景截图
using UnityEngine;
using System.Collections;
public class colorChange : MonoBehaviour
{
public GameObject cube;
private Renderer rend;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
// This will get the OBJECT to CHANGE COLOR on KEY PRESS
if (Input.GetKeyDown (KeyCode.R))
GetComponent<Renderer> ().material.color = Color.red;
print ("A Key Pressed For Red Color");
}
void OnCollisionEnter (Collision col)
{
if (col.collider.name == "Matt")
{
rend.material.color = Color.yellow;
}
}
}
这是两个对象的属性截图:
【问题讨论】:
-
if (col.collider.name == "Matt")使用调试器验证名称是什么,当您到达这一行时,您甚至在哪里分配 collider.Name..? -
您的刚体组件之一是否标记为运动学?运动学刚体不检测物理模拟中的碰撞...
-
我现在在代码中添加了打印语句,碰撞器也应用于立方体,并且没有脚本应用于播放器控制器。对不起,我对编码很陌生,如果我有任何挫败感,请原谅我。 void OnCollisionEnter (Collision col) { if (col.collider.name == "Matt") { print (col.collider.name); rend.material.color = 颜色.黄色; } }
-
@Serlite 我的播放器控制器的刚体被标记为运动学,我尝试取消选中它,但一旦碰撞它仍然不会触发我的立方体上的另一种颜色。
-
如果您将日志记录添加为
OnCollisionEnter的第一行,它甚至会被调用吗?如果没有,请向我们展示您尝试检测碰撞的两个对象的属性的屏幕截图。