小编Its*_*ain的帖子

如何在不留空隙的情况下为线条渲染器形状设置动画

我正在使用下面的代码根据点数创建带有线条渲染器的形状.对于大于3的点(三角形等),第一个和最后一个点不会像其他点那样关闭形状.

1.如何在没有任何可见间隙的情况下关闭超过3个点的形状?

2.如何设置形状的动画,以便在特定的持续时间内绘制线条(可能使用协程)?

public class CircleDrawing : MonoBehaviour
{

    [Tooltip("The radius of the circle, measured in world units.")]
    public float Radius = 2;

    [Tooltip("The number of vertices in the circle.")]
    public int Points = 5;

    [Tooltip("The color of the circle.")]
    public Color Color;

    private LineRenderer lineRenderer;

    public void Awake()
    {
        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
        lineRenderer.material.color = Color;
        lineRenderer.startWidth = lineRenderer.endWidth = 0.5f;
        lineRenderer.positionCount = Points + 1;    //+1 to close the shape
        Draw();
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

17
推荐指数
1
解决办法
1229
查看次数

如何确定方块是否可以在不与其他精灵接触的情况下到达位置?

在此输入图像描述

从上图中,给定初始位置b0(x,y),b1(x,y)的结束位置和a(x,y)和c(x,y)的位置.如何在不与矩形A和C接触的情况下预先确定方形B0是否从b0(x,y)移动到b1(x,y)?我相信这个角度是必要的.

game-physics sprite-kit swift swift2

10
推荐指数
1
解决办法
209
查看次数

如何中断SpriteKit操作序列并恢复,就好像没有中断一样

我想打断下面的序列2秒钟,然后恢复到最初没有中断的情况.

例如,从下面的代码中,如果我通过使精灵从序列的1.5 - 3.5秒可见而中断序列2秒(意味着hideInterval动作加上showSprite动作1 秒,并且showInterval动作将丢失0.5秒))中断将在showInterval动作剩余2.5秒时结束.如何让sprite在剩余的2.5秒内运行一个动作,并继续该点的正常序列.

请注意,这个例子是为了清楚起见,但我希望在中断后更通用的方法来恢复序列.

    let hideSprite = SKAction.fadeAlpha(to: 0, duration: 0.5)
    let showSprite = SKAction.fadeAlpha(to: 100, duration: 0.5)
    let hideInterval = SKAction.wait(forDuration: 2)
    let showInterval = SKAction.wait(forDuration: 3)
    let spriteSequence = SKAction.sequence([hideSprite, hideInterval, showSprite, showInterval])
    sprite.runAction(SKAction.repeatForever(spriteSequence))
Run Code Online (Sandbox Code Playgroud)

UPDATE

我认为下面的图表将使我的问题更容易理解,并进一步解释我想要通过中断序列实现的目标.

在此输入图像描述

sprite-kit skaction swift3

6
推荐指数
1
解决办法
269
查看次数

如何防止在touchesBegan方法中出现双击时调用一次单击

我已经实现了单点和双击。但是,每当我双击屏幕时,也会运行一次点击代码。请参见下面的代码:

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first as UITouch!
    let touchLocation = touch?.location(in: self) 
    let touchedNode = self.atPoint(touchLocation!)

if touch?.tapCount == 1 {
        print("single tap")
        if let name = touchedNode.name        {
            if name == "enemySprite"
            {
                //handle single Tap
             }
         }
    }

if touch?.tapCount == 2 {
        print("double tap")
        if let name = touchedNode.name        {
            if name == "enemySprite"
            {
                //handle double Tap
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使每个水龙头计数互斥?

更新

根据Apurv的回答和Whirlwind的评论,我认为以下代码可以正常工作。

 override func didMove(to …
Run Code Online (Sandbox Code Playgroud)

ios sprite-kit swift swift3

5
推荐指数
1
解决办法
1563
查看次数