//相机跟随
Transform player; //获取玩家位置
Vector3 pos;
private float smooth=3f;
void Start()
{
player=GameObject.FindWithTag("Player").transform;
pos=transform.position-player.position;
}
void Update()
{
//普通跟随
transform.position=pos+player.position;
transform.LookAt(player.position);
//使相机跟随更加平滑
//插值 transform.position=Vector3.Lerp(transform.position,pos+player.position,Time.deltatime*smooth);
Quaternion q=Quaternion.LookRotation(transform.position-player.position,Vector3.up);
//球形插值
Quaternion.Slerp(transform.rotation,q,Time.deltatime*smooth);
}
//玩家移动(先为角色添加角色控制器)
private private CharacterController cc;
private float speed=100f; //玩家移动速度
void Start()
{
cc=GetComment<CharacterController>(); //获取角色控制器
}
void Update()
{
Move();
}
void Move()
{
float h=Input.GetAxis("Horizontal");
float v=Input.GetAxis("Vertical");
Vector3 dir=new Vector3(h,0,v);
cc.SimpleMove(dir*Time.deltatime*speed);
transform.rotation=Quaternion.LookRotation(dir); //角色跟着水平轴旋转
}
//invoke方法克隆敌人
invoke("Clone",3f); //方法名和克隆时间
void Clone()
{
for(int i=0;i<n;i++) //n表示敌人数量
{
Instantiate(敌人);
}
}
//玩家发射射线攻击敌人使敌人消失(3D拾取技术)
Ray ray=new Ray(transform.position,transform.forward);
RarcastHit hit;
if(Physics.Raycast(ray,out hit)
{
Destroy(hit.collider.gameObject);
}
//敌人攻击玩家使玩家扣血
case SpiderState.JumpAttack:
jumpAttackTimer -= Time.deltaTime;
//播放敌人攻击玩家动画
if (jumpAttackTimer <= 0)
{
state = SpiderState.Idle;
GameManagers.Instance().Hp -= 1; //敌人攻击动画播完使玩家减一滴血
jumpAttackTimer = an[StaticGameResources.spiderJumpAttack].length;
}