一、背景滚动的设置
public float speed = 1;
//背景的尺寸
private float backgroundSize;
// Use this forinitialization
void Start()
{
//获取背景的尺寸
backgroundSize =transform.GetComponent<Collider>().bounds.size.x;//记得添加组件
}
// Update is called once per frame
void Update()
{
//背景的移动
transform.Translate(new Vector3(0, 0,-1) * Time.deltaTime * speed);
//如果背景图片的位置小于(0,0,-backgroundSize)就重置背景的位置
if (transform.position.z <=-backgroundSize)
{
RepositionBackground();
}
}
//重置背景的位置
void RepositionBackground()
{
//计算位置的偏移量
Vector3 groundOffset = new Vector3(0,0, backgroundSize * 2.0f);
//在现有位置上加上偏移量
transform.position = transform.position +groundOffset;
}
二、第一人称视角创建个文本:CharactorMove文件
//1.可直接写下面两句,添加组件省的忘了,也可在Unity面板里手动添加。
[RequireComponent (typeof(CharacterController))] //直接绑定组件,拖文件就会直接添加,不加符号。
[RequireComponent (typeof(Rigidbody))]
第一人称
//知道这个添加CharacterController组件,第一视角,下面文件是实现这个功能的
//实现的流程:
//创建个平面,空文件夹下胶囊体和相机,相机在胶囊体内部,空文件下加CharactorMove文件文件和刚体,记得添加
//CharacterController组件,点击Is kinematic要点击启动动力学,要不容易走翻车了,
//再了胶囊体可删除掉,真正的第一视角,看不见自己了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------publicfloat speed;//移动的速度
float offsetMouseX;//鼠标的水平偏移量
float offsetMouseY;//鼠标在数值方向上的偏移量
publicfloat rotateX;//人称控制器在水平方向上的旋转角度
privateCharacterController m_CharacterController;
//获取轴向
privatefloat horizontal;
privatefloat vertical;
privateCamera m_mainCamera;
1.void Start () {
m_CharacterController = GetComponent<CharacterController>();//获取组件
//下面这句话的前面是得到了 游戏对象.获取组件
m_mainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
}
2.void Update () {
horizontal = Input.GetAxis("Horizontal");//左右轴
vertical = Input.GetAxis("Vertical"); //前后轴
//控制第一人称控制器的移动方向这两行就行,下面用轴向合力。代替了WASD写四个了。
Vector3 direction = (transform.forward * vertical + horizontal *transform.right).normalized;
m_CharacterController.SimpleMove(direction * speed *Time.deltaTime);
//第一人称控制器左右旋转,跟着鼠标移动
offsetMouseX = Input.GetAxis("Mouse X");//记得空格
m_CharacterController.transform.Rotate(Vector3.up * offsetMouseX * rotateX *Time.deltaTime);
//第一人称控制器抬头低头看,
offsetMouseY = Input.GetAxis("Mouse Y");//鼠标上下移动
Vector3 cameraRotateAngle = -offsetMouseY *Vector3.right;//绕X轴旋转
m_mainCamera.transform.eulerAngles +=cameraRotateAngle;
//跳动
if(Input.GetKeyDown(KeyCode.Space))//按下空格跳动
{
m_CharacterController.transform.Translate(Vector3.up);
}
}