【Unity】3D功能开发入门系列(三)

一、运动脚本

准备工作:

  • 布置测试场景,添加小火车
    在这里插入图片描述
  • 添加脚本 SimpleLogic,控制小火车移动

(一)物体的运动

一般使用 transform.Translate( ),实现相对运动
transform.Translate( dx, dy, dz, …) ,其中 dx, dy, dz 是坐标增量

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

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

    // Update is called once per frame
    void Update()
    {
   
        float speed = 1;
        float distance = speed * Time.deltaTime;

        //Vector3 pos = this.transform.localPosition;
        //pos.z += distance; // 0.005f;
        //this.transform.localPosition = pos;

        this.transform.Translate(distance, 0, distance);
    }
}

在这里插入图片描述

(二)相对运动

transform.Translate( dx, dy, dz, space),其中第 4 个参数:

  • Space.World,相对于 世界坐标系
    在这里插入图片描述

  • Space.Self,相对于 自身坐标系(本地坐标系)<更常用>
    在这里插入图片描述

在建模时,要求物体的 脸的朝向 与物体 +Z轴 一致
在这里插入图片描述

(三)运动的方向

使物体朝着目标方向移动(这里以小红旗为例),到达目标后停下来
在这里插入图片描述
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static Unity.IO.LowLevel.Unsafe.AsyncReadManagerMetrics;

public class MoveLogic : MonoBehaviour
{
   
    // Start is called before the first frame update
    void Start()
    {
   
        // 获取目标物体
        GameObject flag = GameObject.Find("红旗");
        // 转向目标
        this.transform.LookAt(flag.transform);
    }

    // Update is called once per frame
    void Update()
    {
   
        GameObject flag = GameObject.Find("红旗");
        Vector3 p1 = this.transform.position;
        Vector3 p2 = flag.transform.position;
        Vector3 p = p2 - p1;
        float distance = p.magnitude; // magnitude 取向量的模

        if(distance > 0.3f)
        {
   
            float speed = 2;
            float move = speed * Time.deltaTime;
            this.transform.Translate(0, 0, move, Space.Self);
        }
    }
}

  • 其中:
    GameObject.Find( name_or_path),根据 名字 / 路径 查找物体
    transform.LookAt( target),使物体的 Z轴 指向 target 物体(若目标在空中,火车就原地起飞了)
    Space.self,沿物体自身坐标系的轴向运动
  • 如果想让视角随着物体运动
    在这里插入图片描述

二、旋转脚本

(一)物体的旋转

给物体调转一个旋转的角度

  • Quaternion 四元组(x, y, z, w)
    transform.rotation = … 不便操作,官方也不建议使用
  • 欧拉角 Euler Angle
    transform.eulerAngles = new Vector3( 0, 45, 0);
    transform.localEulerAngles = new Vector( 0, 45, 0);

注:new Vector( 0, 45, 0)、new Vector( 0, 405, 0)、new Vector( 0, -315, 0) 效果相同

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

public class RotateLogic : MonoBehaviour
{
   
    // Start is called before the first frame update
    void Start()
    {
   
        Application.targetFrameRate = 60;
    }

    // Update is called once per frame
    void Update()
    {
   
        float rotateSpeed = 60; // 每秒转 60°

        Vector3 angles = this.transform.localEulerAngles;
        angles.y += rotateSpeed * Time.deltaTime; //0.5f;
        this.transform.localEulerAngles = angles;
    }
}

在这里插入图片描述

(二)相对旋转

Rotate( ),旋转一个相对角度
transform.Rotate( dx, dy, dz, space)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;<
目录 欢迎使用 Unity................................................................................................................................1 一、用户指南..................................................................................................................................2 1.1. Unity 基础(Unity Basics) .........................................................................................2 1.1.1. 学习界面...........................................................................................................2 1.1.2. 资源工作流(Asset Workflow) ........................................................................17 1.1.3. 创建场景(Creating Scenes) ............................................................................18 1.1.4. 发布(Publishing Builds)..................................................................................19 1.1.5. 教程(Tutorials)................................................................................................22 1.2. 构建场景(Building Scenes) ....................................................................................23 1.2.1. 游戏物体(GameObject)..................................................................................23 1.2.2. 使用组件(Using Components) .......................................................................25 1.2.3. 预设(Prefab)....................................................................................................30 1.2.4. 光照(Lights)....................................................................................................33 1.2.5. 相机(Cameras) ................................................................................................42 1.2.6. 粒子系统(Particle Systems)............................................................................46 1.2.7. 地形引擎指南(Terrain Engine Guide)............................................................59 1.3. 使用资源(Working with Assets).............................................................................62 1.3.1. 导入资源(Importing Assets) ...........................................................................63 1.3.2. 网格(Meshes)..................................................................................................65 1.3.3. 材质和着色器(Material and Shaders) ............................................................69 1.3.4. 2D 纹理(Texture 2D) ......................................................................................72 1.3.5. 电影纹理(Movie Texture)...............................................................................78 1.3.6. 音频文件(Audio Files) ...................................................................................80 1.3.7. 使用脚本(Using Scripts).................................................................................84 1.3.8. 资源服务器指南(Assets Server Guide)..........................................................88 1.3.9. 场景背后(Behind the Scenes).........................................................................94 1.4. 创建游戏(Creating Gameplay) ...............................................................................94 1.4.1. 运行时实例化预设(Instantiating Prefabs at runtime) ....................................95 1.4.2. 输入(Input)....................................................................................................100 1.4.3. 变换(Transforms)..........................................................................................102 1.4.4. 物理(Physics)................................................................................................107 1.4.5. 动画(Animation) ...........................................................................................124 1.4.6. 角色动画(Character Animation)...................................................................126 1.4.7. 声音(Sound)..................................................................................................133 1.4.8. 游戏接口元素...............................................................................................138 1.4.9. 多人网络.......................................................................................................139 二、常见问题(FAQ)....................................................................................................................141 2.1. 游戏编码问题.......................................................................................................141 2.1.1. 如何制作一个简单的第一人称行走...........................................................141
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值