IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity初学——3 -> 正文阅读

[游戏开发]unity初学——3

unity初学_3


前言

提示:这里可以添加本文要记录的大概内容:
assets的gitee位置:链接: 太阳系assets
代码仓库:gitee 祭师与恶魔assets
本次博客包含两个**“简单太阳系”“祭师与恶魔”**两个代码实验
简单太阳系预设了四个星球和一个太阳,本文只展示代码和演示

祭师与恶魔游戏:
列出游戏提及的事物
列出玩家动作表
对游戏中的对象进行预设
主要脚本代码
实验演示


提示:以下是本篇文章正文内容,下面案例可供参考

一、简答

游戏对象运动的本质是什么?

对象运动的本质其实是对象每一帧的空间变化和自身变化,包括了transform属性中的“相对位置(position)”和“旋转角度(rotation)”两个方面的变化。

请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…)

定义一个vector3变量,用他的属性表示每个时刻的水平速度和垂直速度,水平速度保持不变,垂直速度随时间正比例变化

直接计算出每个时间对象的位置:
例如:z为一个常数,y为x的二次函数,x随时间均匀变化

二、简单太阳系

编辑器截图:
在这里插入图片描述
运行截图:

具体描述,只设置了一个太阳,四颗大小不一样的星球,运行时将背景设置为符合星空的黑色,每个星球的公转角速度不同,本次编程使用了find函数以便代码简明,在后续的祭师与恶魔中并没有使用find,也没有使用SendMessage等突破程序结构的语句
太阳系的代码实现:公转脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class gongzhuan : MonoBehaviour
{   
    // Start is called before the first frame update
    void Start()
    {
        

    }

    // Update is called once per frame
    void Update()
    {
        GameObject.Find("shuixing").transform.RotateAround(Vector3.zero, new Vector3(0.1f, 1, 0), 60 * Time.deltaTime);

        GameObject.Find("diqiu").transform.RotateAround(Vector3.zero, new Vector3(0.1f, 1, 0), 50 * Time.deltaTime);

        GameObject.Find("muxing").transform.RotateAround(Vector3.zero, new Vector3(0.1f, 1, 0), 80 * Time.deltaTime);

        GameObject.Find("haiwangxing").transform.RotateAround(Vector3.zero, new Vector3(0.1f, 1, 0), 30 * Time.deltaTime);

    }
}

assets的gitee位置:链接: 太阳系assets

三、祭师与恶魔

在这里插入图片描述

在这里插入图片描述

游戏提及的事物

		三个祭师,三个恶魔,河流,左岸,右岸,船

玩家动作表

动作触发条件操纵对象
祭师上船点击岸上的祭师祭师
祭师下船点击船上的祭师祭师
恶魔上船点击岸上的恶魔恶魔
恶魔下船点击船上的恶魔恶魔
行驶船点击船

代码片段说明:

用户界面设计UserGUI:重置所有对象按钮,游戏规则提示,胜利失败提示:

public class UserGUI : MonoBehaviour, IUserAction {

    private int state;
    public UserGUI(){
        state = -1;
    }
    public void setLose(){
        state = 0;
    }
    public void setWin(){
        state = 1;
    }

    public void display(){
        OnGUI();
    }
    void OnGUI(){
        //初始化UI
        GUIStyle style = new GUIStyle{
            fontSize = 45,
        };
        GUIStyle style1 = new GUIStyle
        {
            fontSize = 20,
        };
        style.normal.textColor = new Color(200 / 255f, 200 / 255f, 150 / 255f);    
        GUI.Label(new Rect(UnityEngine.Screen.width/4, UnityEngine.Screen.height/10, 180, 70), "绿色代表天使,红色代表恶魔", style1);

        //三种状态下UI提示的设置
        if (GUI.Button(new Rect(UnityEngine.Screen.width / 10, UnityEngine.Screen.height / 10, 100, 50), "重置所有对象")){
            Director.GetInstance().scene.Reset();
        }
        if (state == 0){
            style.normal.textColor = new Color(255 / 255f, 0 / 255f, 0 / 255f);
            GUI.Label(new Rect(UnityEngine.Screen.width / 3, UnityEngine.Screen.height/1.3f, 180, 70), "您违背了游戏规则,失败了", style);
        }
        if (state == 1){
            style.normal.textColor = new Color(255 / 255f, 0 / 255f, 0 / 255f);
            GUI.Label(new Rect(UnityEngine.Screen.width/3, UnityEngine.Screen.height / 1.3f, 180, 70), "您取得了胜利", style);
        }
    }
}

调节视角(可以在运行后调节相机位置,这种调节不会影响代码,调整到合适角度后记住相机的参数,然后再返回代码修改,重新运行就修改完成了)

public class Camera : MonoBehaviour
{
    void Start()
    {
        
        this.transform.position = new Vector3(-8, 10, 0);
        this.transform.rotation = Quaternion.Euler(new Vector3(30, 90, 0));
    }

}

控制游戏对象的运动scenecontroller

public interface SceneController
{
    void LoadResources();                           
    int getObjPos(string name); 
    void moveObjTo(string name);
    void Reset();
}

判断是否胜利,是否违规director

public class Director : System.Object {
    private static Director instance_1;
    public SceneController scene { get; set; }
    public static Director GetInstance()
    {
        if (instance_1 == null){
            instance_1 = new Director();
        }
        return instance_1;
    }
}

提示:这里对文章进行总结:

代码仓库:gitee 祭师与恶魔assets

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:31:34  更:2022-10-31 12:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 6:12:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码