其实是一个简单的对打游戏,这里面没有用碰撞检测,因为如果要发生碰撞的话,刀可能会飞的,而且也砍不下去,所以只能用触发器了。
下面简单来说说触发器的用法吧,和碰撞一样,必须至少有一个物体有rigidbody,而且两个物体必须都有含有触发器的的collider,我们这用boxcollider(meshcollider不能触发),而且在collider中的Is Trigger要勾上。
我们的游戏对象控制代码player.js:
//游戏角色的移动控制
var playerprogressbar:iGUI.iGUIProgressBar;
var play1:boolean=true;
var isdie:boolean=false;
function Update(){
if(!isdie){
if(Input.GetKey(KeyCode.UpArrow)){
animation.Play("walk");
transform.Translate(Vector3.forward*1*Time.deltaTime);
}
if(Input.GetKey(KeyCode.DownArrow)){
transform.Rotate(Vector3.up*180);
}
if(Input.GetKey(KeyCode.RightArrow)){
transform.Rotate(Vector3.up*10);
}
if(Input.GetKey(KeyCode.LeftArrow)){
transform.Rotate(Vector3.up*-10);
}
if(Input.GetKey(KeyCode.Space)){
animation.Play("attack");
}
if (!animation.isPlaying){
animation.Play("Take 001");
}
}
} <!--DVFMTSC--> Unity3D教程手册
//游戏对象的血条控制
function OnTriggerEnter(obj:Collider){
if(obj.gameObject.name!="playerarrow"){
if(playerprogressbar.value!=0){
playerprogressbar.value-=10;
print(obj.gameObject.name);
}
else{
animation.Play("die");
isdie=true;
}
}
}
敌人的游戏对象控制代码 enemy.js
var player:Transform;
var flag:boolean=true;
var enemyprogressbar:iGUI.iGUIProgressBar;
function Update () {
if(flag){
animation.Play(“walk”);
transform.LookAt(player);
transform.Translate(Vector3.forward*0.5*Time.deltaTime);
}
if(Vector3.Distance(player.position,transform.position)<3){
flag=false;
animation.Play(“attack”);
} <code lang=“csharp”>Unity3D教程手册
else{
flag=true;
}
}
function OnTriggerEnter(obj:Collider){
if(obj.gameObject.name!=“enemyarrow”){
if(enemyprogressbar.value!=0){
enemyprogressbar.value?=10;
print(obj.gameObject.name);
}
else{
animation.Play(“die”);
}
}
}