小编Ruz*_*ihm的帖子

使用vector3.MoveTowards移动对象

我正在使用Unity开发游戏应用程序。我在移动GameObject时遇到问题。

在我的游戏中,当玩家使用其设备向上滑动时,GameObject从点A移至B,而当他向下滑动时,游戏对象则从B移至A。

我用游戏逻辑编写了一个C#脚本,但是涉及到这个问题。

问题在于GameObject立即从A移动到B。

这是我用来移动GameObject的代码行:

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed);
Run Code Online (Sandbox Code Playgroud)

speed 是一个值为10.0f的浮点数。

我希望我的GameObject缓慢移动以将A指向B。尽管速度值发生了变化,但没有任何变化,它仍然在瞬间移动。

我该如何解决?(我尝试Vector3.Lerp过,但结果相同)。

c# android device unity-game-engine gameobject

2
推荐指数
2
解决办法
5206
查看次数

如何迭代数组中的每个数字并将它们与同一数组中的其他数字相加 - JS

我正在尝试将数组中的每个数字与下一个数字相加并保存所有结果:这是我的示例:

var arr = [2, 3, -6, 2, -1, 6, 4];
Run Code Online (Sandbox Code Playgroud)

我必须加2 + 3并保存,然后2 + 3 - 6保存,接下来2 + 3 - 6 - 1保存它等等到数组的末尾.接下来相同的第二个索引3 - 6并保存,3 - 6 + 2 ...我知道这可以通过两个嵌套循环完成,但不知道如何做到这一点.哪里我错了?

const sequence = [2, 3, -6, 2, -1, 2, -1, 6, 4]
const sums = [];

for (let i = 0; i < sequence.length; i++) {

  for (let z = 1; z < sequence.length; z++) {
    let previous = sequence[z - 1] + sequence[z];
    sums.push(previous + sequence[z + 1]) …
Run Code Online (Sandbox Code Playgroud)

javascript arrays loops nested

2
推荐指数
1
解决办法
69
查看次数

在 Unity 中使用 Stockfish Chess AI

早上好。我正在尝试将 Stockfish 实现到 Unity 国际象棋游戏中,有人告诉我最好的方法是使用 Spawn.Process 有谁知道我可以查看并作为参考的现有代码吗?

不同的游戏状态是与人工智能沟通的最佳方式吗?

谢谢!

c# artificial-intelligence unity-game-engine uci

2
推荐指数
1
解决办法
4518
查看次数

抽象List &lt;T&gt; .Add在基本构造函数上不起作用

我有一个简单的类,它用预定义值覆盖列表获取方法,但是,在基本构造函数上调用add方法时,它不会添加新值。

这是我的代码,显示错误:

using System.Collections.Generic;
using NUnit.Framework;

public class SimpleTest
{
    [Test]
    public void Test()
    {
        var child = new ChildClass();
        Assert.AreEqual(4, child.myList.Count);
    }

    private abstract class MyBaseClass
    {
        public abstract List<string> myList { get; }

        public MyBaseClass(string addThis)
        {
            myList.Add(addThis);
        }
    }

    private class ChildClass : MyBaseClass
    {
        public override List<string> myList => new List<string> { "one", "two", "three" };

        public ChildClass() : base("four")
        {
            myList.Add("dsada");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?由于没有设置器,因此列表不能用其他列表代替,但是Add方法仍然适用于这种情况。

c#

2
推荐指数
1
解决办法
46
查看次数

如何在代码中创建一个抽象类,让蓝图扩展它,然后将该蓝图返回给代码进行实例化?

假设我想在代码中创建一个用于控制 pawn 的 AI 类,但我希望我的设计师能够使用蓝图来修改行为以进行快速迭代。

假设我在MyProjectBaseAI.h 中有这个:

#pragma once

#include "EngineMinimal.h"
#include "GameFramework/Actor.h"
#include "MyProjectBaseAI.generated.h"

UCLASS()
class MYPROJECT_API AMyProjectBaseAI : AActor
{
    GENERATED_BODY()

public:
    AMyProjectBaseAI(const FObjectInitializer& ObjectInitializer);

    virtual void BeginPlay() override;

    virtual void Tick(float DeltaSeconds) override;

    void SetGoalPosition(FVector pos);

    virtual void DetermineGoalPosition(int32 stateData1, int32 stateData2) = 0;

private:
    FVector goalPosition;
};
Run Code Online (Sandbox Code Playgroud)

我想让这个类抽象,并有一个蓝图能够根据他们的 AI 设计实现DetermineGoalPosition(...);调用SetGoalPosition(FVector pos)

那么,设计人员如何在检查器中设置实现类,以便我的 C++ 代码可以实例化它?假设我正在使用AMyProjectBaseAI ai = World->SpawnActor<AMyProjectBaseAI>(...);

c++ abstract-class unreal-engine4 unreal-blueprint

2
推荐指数
1
解决办法
4275
查看次数

着色器可以旋转形状以面向相机吗?

我制作了一个球出现在 3D 空间中的场景。三角球耗费大量资源。所以我使用带有球纹理的二维表面(四边形)来完成此操作。但现在我需要在每次相机移动时调整形状的方向。我使用位置变换和 LookAt 方法来完成此操作。问题是我可以优化这个吗?如果可以使用着色器旋转形状,这将有很大帮助。

在此输入图像描述

using UnityEngine;

public class WorldSurf : MonoBehaviour
{
    GameObject[] matrix;

    int xSize =  20;
    int ySize =  20;
    int zSize =  20;

    // Start is called before the first frame update
    void Start()
    {
        matrix = new GameObject[xSize * ySize * zSize];

        //var shader = Shader.Find("Legacy Shaders/Diffuse");
        var shader = Shader.Find("Sprites/Default");
        //var texture = Resources.Load<Texture>("Textures/Ball_01");

        var i = 0;

        for (var x = 0f; x < xSize; ++x)
        {
            for (var y = 0f; y …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

2
推荐指数
1
解决办法
6998
查看次数

为什么不解析值0,却解析其他数字?

我正在为Celcius,Kelvin,Farenheit设计温度转换器,并一直停留在这个小问题上。我使用事件监听器来跟踪和解析我的输入,并且每当传入任何数字时,转换都将包括0。我有3个输入字段和3个占位符文本,因此如果我想转换摄氏温度,它们将转换为开尔文和法伦海特。但是,当我退格并将输入留空时,其他两个温度将返回NaN,据我了解,因为这些字段现在没有值。

因此,现在我想解决这个问题,将输入保留为空白,并将占位符文本重置为原始文本,而不是显示NaN。我尝试过if语句来捕获此特定问题,并且效果很好。现在,我可以在不同温度之间转换数字,甚至退格也可以重置占位符文本。一切正常,但数字为0。只要输入0,它就不会被解析并且什么也没有发生。

const celciusInput = document.querySelector("#celcius > input");
const fahrenheitInput = document.querySelector("#fahrenheit > input");
const kelvinInput = document.querySelector("#kelvin > input");

function celciusConverter() {
  const cTemp = parseFloat(celciusInput.value) || "";
  const fTemp = cTemp * (9 / 5) + 32;
  const kTemp = cTemp + 273.15;

  //condition if there is an empty string in the input, placeholder values would reset instead of returning NaN.
  if (cTemp == "") {
    fahrenheitInput.value = "";
    kelvinInput.value = "";
  } else {
    fahrenheitInput.value = Math.round(fTemp); …
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
64
查看次数

如何做半圆周运动?

假设我有一辆汽车在 P0 位置,我想把它移动到 P1 位置,就像这 4 个例子:

在此处输入图片说明

P0 和 P1 之间的直线距离为d,运动到达的垂直最大高度为d/3。我想模拟这个从 P0 到 P1 的顺时针半圆运动。

假设dir = P1 - P0(length d)perpd/3垂直于的向量 (长度) dir

假设t = 0是半圆运动的开始和t = 1结束,我如何测量汽车的角度和位置t = i

c# algorithm math geometry unity-game-engine

2
推荐指数
1
解决办法
93
查看次数

脚本缺少复选框

我正在编写一个脚本,当我想将其添加到 GameObject 时,我注意到启用检查消失了,并且无法将脚本拖到该组件的检查器中Event Script

我尝试更改脚本的名称,但没有任何变化。

要添加的脚本:

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

public class EventScript : MonoBehaviour
{
    private GameObject obj;

    public SaveObjScript saveObjScript;
    public SpawnScript spawnScript;

    public void InitObject(){
        Debug.Log("OBJETO A ACCIONAR ES: " + saveObjScript.getObject().name);
        //obj = saveObjScript.getObject();
    }

    public void ChangeColor(){
        InitObject();
        Renderer rend = obj.GetComponent<Renderer>();
        rend.material.color = Random.ColorHSV();
    }

    public void RemoveObj(){
        InitObject();
        Destroy(obj);
        spawnScript.mTotalObjetos --;
    }
}
Run Code Online (Sandbox Code Playgroud)

脚本已禁用

c# unity-game-engine

2
推荐指数
1
解决办法
2799
查看次数

虚幻引擎 C++ 数据资产类问题

因此,我尝试创建一个自定义数据资产以在虚幻引擎中使用。我对此非常陌生,我主要关注艺术,所以尽管我对 OOP 有一个大致的了解,但 C++ 远不是我的强项。无论如何,我的课程如下所示:

USTRUCT()
struct FTrainFormations {

    GENERATED_USTRUCT_BODY()

    UPROPERTY(EditAnywhere)
    FString TrainEntry;

    UPROPERTY(EditAnywhere)
    bool Flipped;

    UPROPERTY(EditAnywhere)
    bool CargoLoaded;

    UPROPERTY(EditAnywhere)
    bool AllowSubstitution;

};

UCLASS(BluePrintType)
class TS2NEW_API UTrainFormation : public UDataAsset
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Train")
    TArray<FTrainFormations> Formation;

    UPROPERTY(EditAnywhere, Category = "Train", DisplayName = "Train Numbering Overrides")
    TArray<int> TrainNumberingOverrides;

    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Vehicle Substitution")
    float BlockTrainProbability;

    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Rail Vehicle Information")
    int CommonnessWeighting;

    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Rail Vehicle Information")
    bool IsSubstitutableUnit;

    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category …
Run Code Online (Sandbox Code Playgroud)

c++ unreal-engine4

2
推荐指数
1
解决办法
4316
查看次数