Unity学习-实现玩家&&按钮&&门之间的互动

创建quad的触发代码,使得关卡中的玩家在触动到quad时,门会打开。

把quad选中增加代码,改名字为MagicCircle,然后里面定义门ironbars的对象,然后在关卡界面选中MagicCircle把门的对象迅速拖到对应框中,使得两个联系在一起。进行操作,具体操作见下面代码。

ironbars.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ironbars : MonoBehaviour {
	//variables 变数定义区
	/*public int x;
	public float y;
	[Range(1,15)]//这个是针对在下面的变量z,变成拉杆
	public float z;
	public string a;*/
	// Use this for initialization
	public float 	MaxY=22.66f;//定义Y的最大值
	public float startY;//定义一个初始的Y值
	void Start () {
		//一次性程序码区 console只显示一次
		//print(a);
		//print(transform.position.y);//先显现初始的Y=16.5f
		startY=transform.position.y;

	}
	
	// Update is called once per frame

	void Update () {
		


		//重复性程序码区,刷新60次/秒
		//print(gameObject.transform.position.x);//获取上边的非自己定义的属性值
		/*
		if (transform.position.y < MaxY) {//判断y是否上升到最大高度
		transform.position=new Vector3(transform.position.x,transform.position.y+0.1f,transform.position.z);
		}

		*/


		if (Input.GetKey(KeyCode.J)) {//长按,J的大小写拼错会产生错误的
			/*if(transform.position.y<=startY+3.63f){//限制门上升的高度
				transform.position=new Vector3(transform.position.x,transform.position.y+0.1f,transform.position.z);
			}*/
			Lift ();//改成被踩了就调用lift的函数

		}
		if (Input.GetKey(KeyCode.K)) {//长按
			transform.position=new Vector3(transform.position.x,transform.position.y-0.1f,transform.position.z);
		}
			
      }

	public void Echo(){
		print ("Echo");
	}
	public void Lift(){
	
		if(transform.position.y<=startY+3.63f){//限制门上升的高度
			transform.position=new Vector3(transform.position.x,transform.position.y+0.1f,transform.position.z);
		}
	
	
	}




}

MagicCircle.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MagicCirle : MonoBehaviour {
	public ironbars ironbars1;//定义一个门

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
	private void OntriggerEnter(Collision other){//碰见软的就触发,输出
		print ("Trigger Enter");
		ironbars1.SendMessage ("Echo");//调用ironbar中的Echo函数
    }


	private void OntriggerStay(Collision other){//一直触发才会输出
		ironbars1.SendMessage ("Lift");//此时调用ironbars的函数,此时门就会被打开
		
	}
	private void OntriggerExit(Collision other){//一离开就触发
		
	}


	private void OncollisionEnter(Collision other){//碰见硬的就触发输出,会向上跳一下,没有勾选trigger
		print ("Collision Enter");
	}


}

这里的碰撞分为两种,一种是硬碰硬 ,一种是硬碰软,

Unity学习-实现玩家&&按钮&&门之间的互动_第1张图片

convex是让地上的quad变成一个多边形一样的碰撞体。

不勾选trigger的话属于硬的碰硬的,会在接触的时候,出现跳起来的情况,勾选了之后是硬的碰软的,就直接走进去一样的效果。

你可能感兴趣的:(unity3D)