游戏——主玩家相关——基础移动旋转摄像机跟随等
先创建一个玩家类
控制玩家的移动
然后在父类再抽象一个炮台
控制炮台旋转
控制开火
重写死亡
重写受伤
摄像机跟随
将摄像机拖拽至炮台下让其成为炮台的子对象,并调整其参数即可
直到当前PlayerObj的代码为:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerObj : TankBaseObj
{
//关联玩家装备的武器
public WeaponObj nowWeapon;
//关联的武器父对象位置
public Transform weaponPos;
void Update()
{
//控制玩家前后移动
transform.Translate(Input.GetAxis("Vertical") * Vector3.forward * moveSpeed * Time.deltaTime);
//控制玩家左右旋转
transform.Rotate(Input.GetAxis("Horizontal") * Vector3.up * turnSpeed * Time.deltaTime);
//控制炮台的旋转
tankHead.transform.Rotate(Input.GetAxis("Mouse X") * Vector3.up * headTurnSpeed * Time.deltaTime);
//控制开火
if (Input.GetMouseButtonDown(0))
{
Fire();
}
}
public override void Fire()
{
if (nowWeapon != null)
{
nowWeapon.Fire();
}
}
public override void Dead()
{
Time.timeScale = 0;
DeadPanel.Instance.ShowMe();
}
public override void Wound(TankBaseObj other)
{
base.Wound(other);
//更新血条
GamePanel.Instance.UpdateHP(maxHP, hp);
}
//切换武器
public void ChangeWeapon(GameObject weapon)
{
//如果玩家已经装备了武器,那就先销毁它
if (nowWeapon != null)
{
Destroy(nowWeapon.gameObject);
nowWeapon = null;
}
//实例化这个武器
GameObject weaponObj = Instantiate(weapon, weaponPos, false);
nowWeapon = weaponObj.GetComponent<WeaponObj>();
//设置这个武器的拥有者
nowWeapon.SetFather(this);
}
}