【Unity3D入门教程】使用C#脚本控制游戏对象

【Unity3D入门教程】使用C#脚本控制游戏对象使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中在C#上。本文将会介绍怎样使用脚本控制场景中的游戏对象。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中在C#上。本文将会介绍怎样使用脚本控制场景中的游戏对象。

 

1 创建脚本

点击Project视图中的Create——C# Script。然后将脚本命名为motion.cs。双击脚本,使用编辑器打开它。我的编辑器已经改为了VS2013,软件默认的编辑器是MonoDevelop。默认的内容如下。

using UnityEngine;
using System.Collections;

public class motion : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}


首先,using关键字定义了两个默认使用的程序集UnityEngine和System.Collections。然后类名和我们定义的文件名保持一致。类里面有两个默认的函数Start()和Update()。Start()在脚本运行开始时执行,而Update()在游戏运行的每一帧都执行。

 

2 控制方块运动

我们创建一个Cube,然后使用自己写的脚本控制其运动。假设场景中已经有了一个Cube,为了使我们的C#脚本可以随着游戏开始而运行,我们需要将脚本绑定在Hierarchy中的某个物体上。不妨我们就把脚本绑定在方块上吧。绑定脚本的方式很简单,直接用鼠标把脚本拖动到Hierarchy视图或者Scene视图中对应的物体上即可。也可以先选中物体,然后把脚本拖动到该物体Inspector视图的空白处。

在脚本的Start()函数中添加这句话:

Debug.Log("hello unity");

然后点击游戏运行按钮,可以在控制台窗口看到如下信息,表示脚本运行成功。

【Unity3D入门教程】使用C#脚本控制游戏对象

接下来我们使用脚本控制方块的旋转、平移、缩放。

(1)旋转

this.transform.Rotate(Vector3.up*1,Space.World);

将上面的语句写到Update函数中,表示每一帧沿着世界坐标系的Y方向旋转1度。如果要沿着自身坐标系,则将Space.World改为Space.Self.

this.transform.Rotate(Vector3.up*1,Space.Self);

(2)平移

this.transform.Translate(Vector3.up*0.1f,Space.World);

将上面的语句写到Update函数中,表示每一帧沿着世界坐标系的Y方向移动0.1m。Unity默认的长度单位是米。如果要沿着自身坐标系,则将Space.World改为Space.Self.

this.transform.Translate(Vector3.up*0.1f,Space.Self);

(3)缩放

this.transform.localScale = new Vector3(1 +Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time));

将上面的语句写到Update函数中,该语句可以使得方块随着时间做正弦运动规律的缩放。

 

3 控制多个对象

前面我们在控制对象的时候,使用了“this”,它指的是脚本被绑定的那个物体。如果我们要控制多个物体,就需要使用公有变量绑定物体或使用脚本动态寻找物体。

在场景中创建3个Cube,分别是Cube1,Cube2,Cube3。将写好的脚本绑定到摄像机上。

【Unity3D入门教程】使用C#脚本控制游戏对象

(1)使用公有变量

将脚本内容设置为如下所示。

using UnityEngine;
using System.Collections;

public class motion : MonoBehaviour {

	public GameObject cube1;
    public GameObject cube2;
    public GameObject cube3;

	void Start () {
        Debug.Log("hello unity");
	}
	
	// Update is called once per frame
	void Update () {
        cube1.transform.Translate(Vector3.up*0.1f, Space.World);
        cube2.transform.Rotate(Vector3.up*1,Space.Self);
        cube3.transform.localScale = new Vector3(1 + Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time));
	}
}

拖动对应的Cube到脚本的变量上。

【Unity3D入门教程】使用C#脚本控制游戏对象

(2)使用脚本动态绑定

如果使用脚本自动绑定物体,则使用下面的脚本。

using UnityEngine;
using System.Collections;

public class motion : MonoBehaviour
{

    GameObject cube1;
    GameObject cube2;
    GameObject cube3;

    void Start()
    {
        cube1 = GameObject.Find("Cube1");
        cube2 = GameObject.Find("Cube2");
        cube3 = GameObject.Find("Cube3");
    }

    // Update is called once per frame
    void Update()
    {
        cube1.transform.Translate(Vector3.up * 0.1f, Space.World);
        cube2.transform.Rotate(Vector3.up * 1, Space.Self);
        cube3.transform.localScale = new Vector3(1 + Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time), 1 + Mathf.Sin(Time.time));
    }
}

(3)运行效果如下图

【Unity3D入门教程】使用C#脚本控制游戏对象

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169351.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • git的使用步骤_git提交流程

    git的使用步骤_git提交流程1、git的基本使用方法:第一步:window本机电脑安装git软件(只需要一次)第二步:配置环境变量(只需要一次)安装到D:\software\git\目录,把bin目录路径完整加入Path变量。D:\software\git\bin第三步:配置git的config(只需要一次)gitconfig–globaluser.email”you@example.com”gitconfig–globaluser.name”YourName”查看.

    2022年9月22日
  • NLP学习路线总结

    NLP学习路线总结目录1、自然语言处理概述2、自然语言处理入门基础3、自然语言处理的主要技术范畴4、自然语言处理基本点5、特征处理6、模型选择7、NLP常用工具8、NLP语言模型9、快速入门NLP方法10、自然语言处理学习资料1、自然语言处理概述自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向…

    2022年9月28日
  • 如何通过SecureCRTPortable.exe 软件远程连接某个计算机(或者虚拟机)中的某个数据库…

    如何通过SecureCRTPortable.exe 软件远程连接某个计算机(或者虚拟机)中的某个数据库…1)双击SecureCRTPortable.exe-快捷方式,打开软件;2)”文件”—>”快速连接”–>弹出对话框;2.1)输入主机名(即您所想连接的计算机或虚拟机)的ip号:例如:192.168.0.1132.2)输入用户名(指的是计算机(或者是虚拟机)中的某个用户,因为一个计算机或…

    2022年5月18日
  • Docker安装Rabbitmq超详细教程

    Docker安装Rabbitmq超详细教程安装Rabbitmq1.使用docker查询rabbitmq的镜像dockersearchrabbitmq2.安装镜像安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可dockerpullrabbitmq3.运行mq:dockerrun-d–hostnamemy-rabbit–namerabbit-p15672:15672-p5673:5672rabbitmq通过dockerps-a查看部

    2022年5月24日
  • webpack基本配置详解_vue基础知识

    webpack基本配置详解_vue基础知识devServer可以用来提高开发效率,它提供一下配置可以改变devServer的默认行为。除了在配置问题通过devServer传入参数外,还可以通过命令行参数传入。注意:只用在通过devServer去启动webpack时,配置文件里devServer才会生效,因为这些参数所对应的功能都是devServer提供的,webpack本身并不认识devServer配置项。1.hotdevServer.hot配置是否启用模块热替换功能。devServer默认行为是在发现…

    2022年10月29日
  • struts的内置_struts自定义拦截器

    struts的内置_struts自定义拦截器一般我们的web应用都是只有在永固

    2022年9月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号