Unity3D】unity如何实现简单的交互

2021-02-03 11:29发布

9条回答
思禹小姐姐y
2楼 · 2021-02-03 15:24

1.在Asset store里选择一个skybox。 

2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 

3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的运动,并且支持改变速度。


Ross
3楼 · 2021-02-04 10:44

一.使用虚拟轴

通过Input类的静态方法GetAxis(轴的名字),得到横轴或者纵轴上的值,其值为-1~1,然后把这个值用到物体的移动上,即可以通过键盘上的WASD键控制物体的前后左右移动.

二.使用碰撞器和鼠标之间的事件

通过回调方法OnMouseEnter,OnMouseDrag,OnMouseOver,OnMouseDown,OnMouseUp,OnMouseClick,OnMouseAsButton,可以让鼠标和碰撞器之间进行交互

三.使用UI界面

通过UI界面的Button,Slider,Toggle等控件进行交互

四.通过键盘按键进行交互

使用Input类的GetKey,GetKeyDown和GetKeyUp进行交互

五.通过鼠标按键进行交互

使用Input类的GetMouseButton,GetMouseButtonDown和GetMouseButtonUp进行交互


Transform
4楼 · 2021-02-03 14:54

可以使用鼠标和键盘对游戏对象进行交互控制。

image.png

image.png

茄子酱
5楼 · 2021-02-03 15:06

下面我们来建立一个书的行为类文件
using UnityEngine;
using System.Collections;
using System.IO;
using System.Xml;
public class Book : MonoBehaviour {
// Use this for initialization
string _FileLocation;
string _FileName = “MConfig.xml”;
string _xmlData;
XmlDocument configData;
private ArrayList pages;
public GameObject page;
private int index = 0;
private int pageLen = 0;
void Start () {
_FileLocation = Application.dataPath;
pages = new ArrayList();
LoadXML();
initBook();
}
// Update is called once per frame
void Update () {
}
void LoadXML() {
StreamReader r = File.OpenText(_FileLocation + “\\” + _FileName);
string info = r.ReadToEnd();
r.Close();
_xmlData = info;
configData = new XmlDocument();
configData.LoadXml(_xmlData);
}
void initBook() {
foreach (XmlNode item in configData.SelectNodes(“/mConfig/page”))
{
//print(item.Attributes["murl"].Value);材质路径
GameObject obj = (GameObject)Instantiate(page);
obj.renderer.material.mainTexture = (Texture)Resources.Load(item.Attributes["murl"].Value);
pages.Add(obj);
pageLen++;
}
}
public void PageUp(){
print(“page Up”);
}
public void PageDown() {
print(“page Down”);
}
}
这里我们用了加载XML的方式来生成指定的书的页
那么我们如何才能控制PageUp()以及PageDown()方法呢?
具体的方式是通过如下代码
using UnityEngine;
using System.Collections;
public class NButton : MonoBehaviour {
// Use this for initialization
private Book book;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnMouseDown() {
book = (Book)GameObject.Find(“Book”).GetComponent(typeof(Book));
book.PageDown();
}
}
此行为类绑定到了一个图形界面按钮上.通过点击此按钮来达到控制书内的方法来实现上一页与下一页的翻译动作

yy123456
6楼 · 2021-02-03 17:27

想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的运动,并且支持改变速度。

希希
7楼 · 2021-02-07 09:22

下面我们来建立一个书的行为类文件
using UnityEngine;
using System.Collections;
using System.IO;
using System.Xml;
public class Book : MonoBehaviour {
// Use this for initialization
string _FileLocation;
string _FileName = “MConfig.xml”;
string _xmlData;
XmlDocument configData;
private ArrayList pages;
public GameObject page;
private int index = 0;
private int pageLen = 0;
void Start () {
_FileLocation = Application.dataPath;
pages = new ArrayList();
LoadXML();
initBook();
}
// Update is called once per frame
void Update () {
}
void LoadXML() {
StreamReader r = File.OpenText(_FileLocation + “\\” + _FileName);
string info = r.ReadToEnd();
r.Close();
_xmlData = info;
configData = new XmlDocument();
configData.LoadXml(_xmlData);
}
void initBook() {
foreach (XmlNode item in configData.SelectNodes(“/mConfig/page”))
{
//print(item.Attributes["murl"].Value);材质路径
GameObject obj = (GameObject)Instantiate(page);
obj.renderer.material.mainTexture = (Texture)Resources.Load(item.Attributes["murl"].Value);
pages.Add(obj);
pageLen++;
}
}
public void PageUp(){
print(“page Up”);
}
public void PageDown() {
print(“page Down”);
}
}
这里我们用了加载XML的方式来生成指定的书的页
那么我们如何才能控制PageUp()以及PageDown()方法呢?
具体的方式是通过如下代码
using UnityEngine;
using System.Collections;
public class NButton : MonoBehaviour {
// Use this for initialization
private Book book;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnMouseDown() {
book = (Book)GameObject.Find(“Book”).GetComponent(typeof(Book));
book.PageDown();
}
}
此行为类绑定到了一个图形界面按钮上.通过点击此按钮来达到控制书内的方法来实现上一页与下一页的翻译动作

pipi雪
8楼 · 2021-02-18 14:57

一.使用虚拟轴

通过Input类的静态方法GetAxis(轴的名字),得到横轴或者纵轴上的值,其值为-1~1,然后把这个值用到物体的移动上,即可以通过键盘上的WASD键控制物体的前后左右移动.

二.使用碰撞器和鼠标之间的事件

通过回调方法OnMouseEnter,OnMouseDrag,OnMouseOver,OnMouseDown,OnMouseUp,OnMouseClick,OnMouseAsButton,可以让鼠标和碰撞器之间进行交互

三.使用UI界面

通过UI界面的Button,Slider,Toggle等控件进行交互

四.通过键盘按键进行交互

使用Input类的GetKey,GetKeyDown和GetKeyUp进行交互

五.通过鼠标按键进行交互

使用Input类的GetMouseButton,GetMouseButtonDown和GetMouseButtonUp进行交互



蜗牛
9楼 · 2021-02-23 10:33

可以获取键盘虚拟轴,还有鼠标或者摇杆,通过简单代码可以实现交互

通过UI控件,例如Button,InputField等控件也可以实现交互

相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    很简单啊,勾选了静态属性的缘故!

  • 回答 9

    Unity已经成为游戏程序员中越来越受欢迎的游戏引擎。这是因为Unity直接支持多种平台,如移动、桌面和控制台环境。此外,对于低收入开发者或工作室来说,它是免费使用的。Unity支持多种技术和组件。一些关键部件是灯光和照明技术。在Unity中,你可以通过模拟复...

  • 回答 6

    修改Light组件中的Intensity的值即可.

  • 回答 14

    开发是开发,美术是美术,不过一般情况下可以不精通,最好能熟练就行。要是想学习Unity3D游戏开发,可以没有美术功底,但要是会写语言就会好学些。

  • 回答 9

    unity更容易上手一些,因为虚幻用的是C++,unity用的是C#,学习C#的成本比C++的成本要小一些,不过虚幻对一些功能封装的比较人性化一些.

  • 回答 7

    在层级视图中点击右键,在Light菜单下选择所需要的灯光类型即可.给物体上添加灯光组件,选择所需要的灯光即可.

  • 回答 4

    把场景中不参与运动的物体设置成静态的.点击window菜单下的Navigation界面,调整好参数,在场景中烘焙出可供行走的路面给场景中要使用导航的物体添面导航网格代理组件在脚本中获取导航风格代理组件对象,调用方法即可...

没有解决我的问题,去提问