我对C#很新,所以如果这很明显,请原谅我.
我正在按照本教程中的步骤操作,并在第六步遇到问题.它给出的错误是:它给出的错误是这样的:
UnityEngine.Component' does not contain a definition for `velocity' and no extension method `velocity' of type `UnityEngine.Component' could be found. Are you missing an assembly reference?'
Run Code Online (Sandbox Code Playgroud)
这是代码:
using UnityEngine;
using System.Collections;
public class RobotController : MonoBehaviour {
//This will be our maximum speed as we will always be multiplying by 1
public float maxSpeed = 2f;
//a boolean value to represent whether we are facing left or not
bool facingLeft = true;
//a value to represent our …Run Code Online (Sandbox Code Playgroud) 我有 2 个控制器可能
1-ControllerBLUE.controller(默认)
2-控制器RED.controller
如何从脚本更改控制器
我试过:
var colorController = GetComponent(Animator);
colorController.runtimeAnimatorController = Resources.Load("main/colors/controllercolors/ControllerRED.controller ") as RuntimeAnimatorController;
Run Code Online (Sandbox Code Playgroud)
但这不起作用,只是将动画控制器设置为:“无(运行时动画控制器)”
是否可以 ?我怎样才能让它发挥作用?
我知道之前已经问过这个问题,但我无法在任何地方找到答案,所以请不要将此标记为重复.
我想在Unity中制作2D游戏,我需要检测击中敌人的子弹.
我在敌人预制件和子弹预制件上都有一个Box Collider 2D和一个Rigidbody 2D.
首先,我尝试不检查"Is Trigger"框.
这是我使用的代码:
function OnCollisionEnter2D(coll: Collision2D)
{
Debug.Log("Detected !");
}
Run Code Online (Sandbox Code Playgroud)
没有成功.
接下来我尝试勾选'Is Triggered'框,并使用以下代码:
function OnTriggerEnter2D(other: Collider2D)
{
Debug.Log("Detected !");
}
Run Code Online (Sandbox Code Playgroud)
再一次,没有成功......
我在两个对象上的组件是'Box Collider 2D'.
我尝试的方法都没有返回任何错误消息,函数只是没有被调用.
如果有人请知道发生了什么,请尽快告诉我 - 我无法继续处理我的游戏,直到这个工作:/
这是Unity的错误吗?我应该报告吗?
此外,以下是其中一个对象上的检查器的屏幕截图:

欢呼任何能回答我所有问题的人!对不起,如果我没有对我的帖子进行格式化,我对论坛不熟悉......
Fjpackard.
collision-detection unity-game-engine unityscript unity3d-2dtools
我正在 Unity 5 中制作一个 2d 棋盘游戏风格的游戏,并且我有一个由几个代表游戏片段的精灵组成的预制件。我希望预制件中有一些文本可以随着游戏的进展进行更新。
如果我尝试添加文本,它需要一个画布,但是当我创建画布时,会创建一个非常巨大的画布,看起来至少比相机区域大 1000 倍。如果我尝试将这个画布放入我的预制件中,我的预制件现在由一个巨大的画布和我的微小精灵图像组成。这使得预制件无法定位、计算大小、制作动画或我想做的任何其他事情。
如何将文本添加到预制件中,并使文本包含在我的预制件尺寸内?
到目前为止,这是我尝试过的:
如果我将文本的画布设置为“渲染模式:世界空间”,我可以使其矩形变换变小。然而,如果我把它设置得和我的精灵一样小,文本就会变得难以阅读的模糊混乱。我猜发生这种情况是因为我的精灵实际上比画布小 1000 倍,所以当我放大到足以看到精灵时,文本已被放大到被遗忘。我的精灵比画布小得多,如果我缩小以查看整个画布,我的精灵甚至不可见。
如果我使用 UI 图像而不是精灵重新创建预制件,我就可以让事情正常进行。这样,UI 图像和文本都是包含在巨大画布中的 UI 元素,因此不存在大小差异。然而,我不知道尝试用 ui 图像而不是精灵构建整个游戏会遇到什么陷阱。我可以获得精灵的所有状态能力吗?
就像Input.GetKey()键盘一样,有没有办法从UI按钮事件触发器中 获取连续的输入OnPointerDown?因为对于带有动画的运动控件,其输出非常奇怪?我必须一次又一次单击它,我不想!
如果答案是手动跟踪,那么该怎么做?
我喜欢在Canvas上播放动画.
我喜欢在绿色帆布上玩高尔夫球手动画.可能吗?
我有动画模型,如第二张图所示.
我喜欢在画布上播放高尔夫球手动画.我怎样才能做到这一点?我拖动并放在画布下作为子对象,它不起作用.
基本上,我有一个由移动设备中的物理键盘和触摸屏支持的统一游戏。我已经完成了物理键盘的移动脚本,现在我正在为触摸屏编写代码。
我怎样才能实现该检测功能?
我在想类似的事情......
private void HandleInput()
{
if (detect if physical keyboard here...)
{
if (Input.GetKey(KeyCode.RightArrow))
{
_normalizedHorizontalSpeed = 1;
}
else if (Input.GetKey(KeyCode.LeftArrow))
{
_normalizedHorizontalSpeed = -1;
}
} else if (detect touch screen here...)
{
for (int i = 0; i < Input.touchCount; ++i)
{
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
some code here...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
欣赏
您好,我是Unity新手,我试图使UI按钮在鼠标悬停在其上时更改其“源图像”,并且当鼠标不再位于该按钮上方时,该按钮的“源图像”恢复正常。我知道需要一个精灵作为按钮的源图像,所以我创建了两个图像精灵文件(一个是普通图像,另一个是鼠标悬停在按钮上时的点亮图像)。
现在这是具有正常源图像的播放按钮的屏幕截图
当鼠标移到按钮上时,按钮将通过点亮来更改其源图像
如何在C#中执行此任务?当鼠标悬停在C#上时,如何更改按钮的源图像?
这是我看了一些参考文献后得到的。我是Unity新手,对我的知识不足感到抱歉
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayButton : MonoBehaviour {
private PlayButton pb;
private Sprite newSprite;
// Use this for initialization
void Start () {
pb = GetComponentInChildren<PlayButton> ();
}
// Update is called once per frame
void Update () {
}
public void onClick(){
}
public void onPointerHover(PointerEventData eventData){
//When mouse hovers over the button, the button changes
pb.image.overrideSprite = newSprite;
}
}
Run Code Online (Sandbox Code Playgroud) 我要打印
*****
*****
*****
*****
*****
Run Code Online (Sandbox Code Playgroud)
通过使用 monoDevelop 的 Debug.Log() 在 unity 控制台中使用 for 循环。这是我的代码:
for(int row=1;row<=5;row++)
{
for(int column=1; column<=5;column++)
{
Debug.Log("*");
}
}
Run Code Online (Sandbox Code Playgroud)
但它以这种方式显示输出:
*
*
*
*
*
till 25 rows.
Run Code Online (Sandbox Code Playgroud) 我下面的代码仅适用于水平移动。垂直运动不应该也起作用吗?我刚刚开始学习基本的 2D Unity 编程:
public class Player : MonoBehaviour {
//These fields will be exposed to Unity so the dev can set the parameters there
[SerializeField] private float speed = 1f;
[SerializeField] private float upY;
[SerializeField] private float downY;
[SerializeField] private float leftX;
[SerializeField] private float rightX;
private Transform _transformY;
private Transform _transformX;
private Vector2 _currentPosY;
private Vector2 _currentPosX;
// Use this for initialization
void Start () {
_transformY = gameObject.GetComponent<Transform> ();
_currentPosY = _transformY.position;
_transformX = gameObject.GetComponent<Transform> ();
_currentPosX …Run Code Online (Sandbox Code Playgroud) 相机跟随 Rigidbody2D 每隔几秒抖动一次背景(非刚体)对象(障碍物)。Profiler 中的 FPS 很好,接近 100。插值也很好。使用Unity 2017.4.12(LTS)
GIF GIF 视频在这里
相机跟随脚本
public class CameraFollow : MonoBehaviour {
public float followRange = 0.5f;
public float cameraZ;
public Transform Player;
public Vector3 newPos;
void Start () {
cameraZ = transform.position.z;
}
void FixedUpdate() {
newPos = new Vector3(Player.position.x + followRange, 0, cameraZ);
transform.position = Vector3.Lerp(transform.position, newPos, 0.5f);
}
}
Run Code Online (Sandbox Code Playgroud)
播放器脚本:
public class PlayerBall : MonoBehaviour {
public float xSpeed = 10;
// Update is called once per frame
void FixedUpdate () …Run Code Online (Sandbox Code Playgroud) 我打算进行日志记录和注册。但是我有一个问题。我无法使密码输入字段变得像*****(被检查)。
也许它不会影响您的答案,但我的游戏将在android平台上进行。
这是示例图片:http : //i.hizliresim.com/WnLjX2.png
谢谢。
我有2D游戏和云精灵.我需要为它制作动画.对于云,例如在屏幕的左边缘随机生成并移动到屏幕的右边缘.云计数必须在1到4之间变化,可以在屏幕上同时显示.
我该怎么做?我需要使用什么(编写自己的脚本或Unity3D已经有一些工具?
unity3d-2dtools ×13
c# ×7
unity5 ×3
unityscript ×3
monodevelop ×2
android ×1
animation ×1
button ×1
game-physics ×1
mobile ×1