做太空漫步游戏(这只是上课所学的一个游戏搭建,其中包括场景的搭建,球体公转自转,以及摄像机跟踪物体以物体视角观看。)

1、需要搭建一个符合的环境,搭建出八大星系(此处所需要的环境背景以及星球外表都是从网上查找下载的),我们需要将用到的资源包从文件导入项目(此处有两种方法,一是直接将资源包从文件拖入到Asset中。二是点击Asset>Import Package>Custom Package, 然后选择需要导入的资源包即可。),以供后续使用。

2、设置背景环境(点击Window>Rendering>Lighting, 选择需要的背景。),建立八大星系(在GameObject中创建球体,在导入的资源包中找到球体外表材质,分别把球体外表拖到不同的球上。),为了尽可能区分每个球体的不同,可以在Inspector中的Scale中调整球体大小。

3、编写自转公转代码并赋予球体(此处不要忘记给球体选择公转目标,公转目标可在inspector中的代码中选择或拖拽至目标栏),此处代码速度并非最终速度,到运行时可在Inspector中的代码调整速度。

3、下面导入飞机资源包,将飞机移动代码赋予飞机。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class MovePlan : MonoBehaviour
{
    // 这个脚本是用户用WASD键盘控制飞机移动
 
    public float MoveSpeed = 50f;
    public float RotateSpeed = 5f;
    float mOUSESPEED;
 
    void Update()
    {
 
        if (Input.GetKey(KeyCode.W))
        {
            this.transform.Translate(new Vector3(0, 0, 1 * MoveSpeed * Time.deltaTime));
        }
        if (Input.GetKey(KeyCode.S))
        {
            this.transform.Translate(new Vector3(0, 0, -1 * MoveSpeed * Time.deltaTime));
        }
        if (Input.GetKey(KeyCode.A))
        {
            this.transform.Translate(new Vector3(-1 * MoveSpeed * Time.deltaTime,0, 0 ));
        }
        if (Input.GetKey(KeyCode.D))
        {
            this.transform.Translate(new Vector3(1 * MoveSpeed * Time.deltaTime, 0, 0));
        }
        //用鼠标控制物体旋转
        mOUSESPEED = Input.GetAxis("Mouse X");
        this.transform.Rotate(new Vector3(0, mOUSESPEED * RotateSpeed*Time.deltaTime, 0));
    }
}

4,最后开始设置摄像头的跟看。我们需要在飞机尾部创建一个空物体(这个空物体是飞机的(下方有图显示空物体的位置),也是摄像头跟随的目标(因为如果将摄像头的视线放到飞机上,它的视线是位于飞机内部,无法整体观察)),同时需要调整好空物体的位置。(在Inspector中的摄像机跟看代码中Onetarget设置为飞机,Onepoint为空物体,若是觉得摄像机跟看有抖动,可以将速度调大。)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ControlCamera : MonoBehaviour
{
    //控制摄像机跟看目标,并且一直看向目标
 
    public Transform onetarget;
    public GameObject OnePoint;
    public float Movespeed = 1f;
    
    void Update()
    {           
 
        this.transform.position = Vector3.Lerp(this.transform.position, OnePoint.transform.position, Movespeed * Time.deltaTime);
 
        this.transform.LookAt(onetarget);
    }
}

在此说明,本人所发布的文章都是课上教师所教内容,只是听从教师建议进行记录,以防后续忘记可以进行复习,对于代码这一方面不怎么熟悉(除了我所更改后的名字在后续运行中没有问题,我建的代码名字基本上都不会去更改,主要原因是有的时候把名字改了,后续运行出现问题,但是我也不知道问题在哪里),同时所发代码内容都是按部就班的照着教师所讲内容打的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值