private bool isAlive;
public enum ChangeColor
{
Red,
Green,
Black
}
public ChangeColor changeColor;//设置枚举状态,然后判断逻辑 写在Gamemager里比较好、
if(Input.GetKeyDown(KeyCode.Q))//根据当前状态判断
{
if (!isAlive) return;
switch (changeColor)
{
case ChangeColor.Red:
if (changeColor ==ChangeColor.Red)
{
render.material.color = Color.green;
changeColor = ChangeColor.Green;
}
break;
case ChangeColor.Green:
if(changeColor == ChangeColor.Green)
{
render.material.color = Color.red;
changeColor = ChangeColor.Red;
}
break;
}
if(res != null)//用碰撞去判断。 {
if(changeColor == ChangeColor.Red)
{
if(res.transform.tag != "Red")
{
Die();
}
}
else if(changeColor == ChangeColor.Green)
{
if (res.transform.tag != "Green")
{
Die();
}
}
private void OnCollisionEnter(Collision collision)
{
count = 0;
res = collision;
}
private void OnCollisionStay(Collision collision)
{
res = collision;
}
private void OnCollisionExit(Collision collision)
{
res = null;
}
void Move()//巧妙的移动方法
{
if (!isAlive) return;
//rig.velocity = Vector3.forward * moveSpeed;//如果你这样写,前进移动跳跃的适合会有
附加速度,
var val = rig.velocity;
val.z = (Vector3.forward * moveSpeed).z;
rig.velocity = val;
anim.SetBool("run", Physics.Raycast(transform.position, Vector3.down, 0.2f));
}
rig.AddForce(Vector3.up * jumpSpeed, ForceMode.Impulse); //跳跃模式
render.enabled = false;//利用render让物体消失不错。
Invoke("ReStart", 1);//延迟调用,和携程异曲同工。